Javascript 访问JS属性-data.att与data[“attr”]?

Javascript 访问JS属性-data.att与data[“attr”]?,javascript,Javascript,以下两种访问人员属性的方法之间是否存在差异?是否存在任何性能影响 var person = {name: "Johen", address: "USA"} 谢谢 他们是平等的。但是,如果键包含字符串之外不允许的字符,则需要使用数组语法。如果你想使用动态键,这一点同样适用——很久以前,人们习惯于使用诸如foo=eval('obj.'+propname)之类的乱七八糟的黑客但是foo=obj[propname]当然好得多 在我看来,obj.property语法更简洁、更自然。ECMA-262第11

以下两种访问人员属性的方法之间是否存在差异?是否存在任何性能影响

var person = {name: "Johen", address: "USA"}

谢谢

他们是平等的。但是,如果键包含字符串之外不允许的字符,则需要使用数组语法。如果你想使用动态键,这一点同样适用——很久以前,人们习惯于使用诸如
foo=eval('obj.'+propname)之类的乱七八糟的黑客但是
foo=obj[propname]当然好得多

在我看来,
obj.property
语法更简洁、更自然。

ECMA-262第11.2.1节描述了对象属性的“点”和“方括号”访问方法。只有在名称符合标识符允许字符规则的有限情况下,才能使用点访问

从表达式计算名称时,可以使用方括号表示法。它本质上说是“计算表达式并将结果用作属性名”,因此您可以执行以下操作:

var name = person.name
var address = person["address"]

数组属性的访问方式与对象属性完全相同-数组只是具有特殊长度属性的对象。

区别:否。性能:您可以自己尝试
function foo() {return 'foo'}
var obj = {};
obj[foo()] = 'foo';