2011-11-02 41 views
0
var person = {name: "Johen", address: "USA"} 

以下两种访问个人属性的方式有什么区别吗?是否有任何性能影响?访问JS属性 - data.att与data [“attr”]?

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

谢谢!

+0

差异:不。性能:您可以尝试使用http://jsperf.com/ –

回答

2

他们是平等的。如果密钥包含不允许在字符串外的字符,则需要数组语法。这同样适用,如果你想使用动态密钥 - 很久以前曾经使用凌乱黑客喜欢foo = eval('obj.' + propname);foo = obj[propname];人是好得多当然

的IMO的obj.property语法是好得多,因为它是更短,更自然。

0

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

方括号表示法可用于从表达式评估名称的位置。它本质上说,“计算表达式并将结果作为属性名称”这样你就可以做这样的事情:

function foo() {return 'foo'} 
var obj = {}; 
obj[foo()] = 'foo'; 

阵列属性完全相同的方式为对象属性访问 - 数组只是一种特殊的对象长度属性。