但兩種方式有一些差異。
用 點號 "." 存取時,點號右邊必須是一個識別字(identifier),例如屬性名稱,不能是字串、變數、運算式...等。
但用 中括號 "[]" 存取時,中括號裡面可以放字串、變數、運算式...等。
例如
var MyObj={ "aa1":"test1", "aa2":"test2" }; // 使用點號 var x = MyObj.aa1; // test1 //使用中括號,可以帶變數進去運算 var y = MyObj["aa1"]; // test1 var tmp = "aa"; var z = MyObj[tmp + "2"]; // test2
所以用 for...in 迴圈列印出某物件的所有屬性時,可以使用 [] 來存取屬性。
這在將物件當成關聯式陣列使用時,還蠻有用的。
var MyObj={ "name":"test1", "tel":"123456789", "addr":"test2" }; for(p in MyObj) { console.log(MyObj[p]); }
至於用 點號 "." 和 中括號 "[]" 來存取的效能,測了一下,似乎沒多大差異。
http://jsperf.com/property-access-dot-notation-vs-brackets
其他:
存取不存在的屬性時,JavaScript 不會報錯,而會回傳 undefined
參考:
http://stackoverflow.com/questions/4968406/javascript-property-access-dot-notation-vs-brackets
謝囉
回覆刪除