2011-11-02 55 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'; 

陣列屬性完全相同的方式爲對象屬性訪問 - 數組只是一種特殊的對象長度屬性。