但兩種方式有一些差異。
用 點號 "." 存取時,點號右邊必須是一個識別字(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
謝囉
回覆刪除