@在JavaScript中做什么?

时间:2011-03-28 20:52:22

标签: javascript

我已经尝试过搜遍整个地方甚至阅读ECMA规范的一些部分,我不能在我的生活中找到任何东西来解释at符号(@)在JavaScript中的作用。那里的任何人都可以帮我理解这个小家伙吗?

我正在阅读的文档:http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf

感谢您的帮助。

2 个答案:

答案 0 :(得分:10)

你不会在ECMA-262中找到它。你想要ECMA-357

§11.1.1属性标识符

  

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”。