var person = {name: "Johen", address: "USA"}
以下兩種訪問個人屬性的方式有什麼區別嗎?是否有任何性能影響?訪問JS屬性 - data.att與data [「attr」]?
var name = person.name
var address = person["address"]
謝謝!
var person = {name: "Johen", address: "USA"}
以下兩種訪問個人屬性的方式有什麼區別嗎?是否有任何性能影響?訪問JS屬性 - data.att與data [「attr」]?
var name = person.name
var address = person["address"]
謝謝!
他們是平等的。如果密鑰包含不允許在字符串外的字符,則需要數組語法。這同樣適用,如果你想使用動態密鑰 - 很久以前曾經使用凌亂黑客喜歡foo = eval('obj.' + propname);
但foo = obj[propname];
人是好得多當然
的IMO的obj.property
語法是好得多,因爲它是更短,更自然。
對象屬性的「點」和「方括號」訪問方法在ECMA-262第11.2.1節中有描述。點訪問只能在名稱符合標識符允許字符規則的有限情況下使用。
方括號表示法可用於從表達式評估名稱的位置。它本質上說,「計算表達式並將結果作爲屬性名稱」這樣你就可以做這樣的事情:
function foo() {return 'foo'}
var obj = {};
obj[foo()] = 'foo';
陣列屬性完全相同的方式爲對象屬性訪問 - 數組只是一種特殊的對象長度屬性。
差異:不。性能:您可以嘗試使用http://jsperf.com/ –