2

对于普通的(“Native”)JavaScript 对象,其中属性名称是有效标识符,表达式x.y总是x["y"]在语义上等价。

主机对象是否保证了这种等效性?

宿主环境提供的 [..an] 对象,用于完成 ECMAScript 的执行环境。

如果没有,是否有明显的例外?(在 Cocoon、Crosswalk、IE 等中?)

特别是我对 Window ( window) 和其他 DOM 对象感兴趣;以及预期行为是否存在任何已知的“例外”,或者是否存在任何可能的环境。

4

1 回答 1

2

它应该是相同的。从Ecma-262 版本 5.1的第 11.2.1 节(属性访问器)中,我们有:

属性通过名称访问,使用点符号:

MemberExpression . IdentifierName 
CallExpression . IdentifierName

或括号符号:

MemberExpression [ Expression ]
CallExpression [ Expression ]

点符号通过以下句法转换来解释:

MemberExpression . IdentifierName

其行为与

MemberExpression [ <identifier-name-string> ]

同样地

CallExpression . IdentifierName

其行为与

CallExpression [ <identifier-name-string> ]
于 2014-11-10T01:20:10.703 回答