我已经尝试过搜遍整个地方甚至阅读ECMA规范的一些部分,我不能在我的生活中找到任何东西来解释at符号(@)在JavaScript中的作用。那里的任何人都可以帮我理解这个小家伙吗?
我正在阅读的文档:http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf
感谢您的帮助。
答案 0 :(得分:10)
你不会在ECMA-262中找到它。你想要ECMA-357。
AttributeIdentifier
用于标识XML属性的名称。它的计算结果为AttributeName
类型的值。前面的“@”字符将XML属性与具有相同名称的XML元素区分开来。选择此AttributeIdentifier
语法是为了与熟悉的XPath语法保持一致。
答案 1 :(得分:3)
@在ECMA262中没有做任何事情。该文档将其用作使用相同语法的不同运算符的占位符。例如,它们描述了复合赋值,例如foo @= bar
,而不是指示所有复合赋值运算符。
复合赋值运算符是x += 1
之类的运算符,除了它们中的相当多,因此,使用@符号仅在手册中象征性地表示它们,代码中没有任何内容。
正如Eli Gray所指出的,这是 EcmaScript for XML 中的一项功能,通常被命名为 E4X ,正式命名为ECMA-357。
重要的是要注意到E4X支持目前并不常见,并且不是真正最适合开放网络的标准,正如WikiPedia文章所述:
Mozilla的 Rhino 支持 支持, OpenOffice .org和其他几个项目,以及Firefox中使用的 SpiderMonkey ,Thunderbird和其他基于XUL的应用程序。它也受到Flash虚拟机中使用的JavaScript引擎Tamarin的支持。 Nitro( Safari ),V8(Google Chrome ), Opera 以及 不支持 Internet Explorer 。1
从页面上的E4X示例
您可以为变量分配一些XML数据(与我们使用JSON语法分配对象的方式大致相同)
var sales = <sales vendor="John">
<item type="peas" price="4" quantity="6"/>
<item type="carrot" price="3" quantity="10"/>
<item type="chips" price="5" quantity="3"/>
</sales>;
然后,要获取属性值,例如“vendor”的值,我们可以
alert( sales.@vendor );
在警报框中取回“John”。