x.y和x['y']是否会导致主机对象的行为不同

Can x.y and x['y'] ever result in different behavior for Host Objects?

本文关键字:对象 主机 是否      更新时间:2023-09-26

对于属性名为有效标识符的普通("Native")JavaScript对象,表达式x.yx["y"]在语义上始终相等。

是否保证主机对象的等效性

[..an]对象,以完成ECMAScript的执行环境。

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

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

它应该是相同的。根据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> ]