2014-10-17 58 views
0

當遍歷一個對象時,通過使用obj.key引用所有的值在obj [key]正常工作時得到「undefined」。他們應該是等同的,不是嗎?我錯過了什麼嗎?Javascript枚舉對象值:差異obj.key vs obj [key]

的jsfiddle鏈接:http://jsfiddle.net/nLLcawcn/4/

function iterateObj(obj, callback) { 
    if (obj == null || typeof obj != "object") { 
     return; 
    } 
    for (var key in obj) { 
     // callback(key, obj[key]); 
     console.log("obj.key--->" + obj.key); 
     console.log("obj[key]--->" + obj[key]); 
     // callback(key, obj.key); 
    } 

} 

var sample = { 
    start: "bar", 
    notes: [{ 
     location: "somewhere" 
    }, { 
     time: "someday" 
    }], 
    anotherobj: { 
     another: "1", 
     another1: "3", 
     another2: "2" 
    }, 
    end: "foo" 
} 
iterateObj(sample, function (key, value) { 
    // console.log("key: " + key+ ", " + "value: "+ value); 
}) 
+0

我給你做了一個小例子: http://jsbin.com/xefinokerowi/1/edit?js,console – 2014-10-17 15:24:03

回答

0

不,他們是不相同的。在對對象進行屬性查找時,您需要使用括號表示法,並且您正在查找的屬性(在本示例中爲「鍵」)是其他屬性的佔位符。例如,for循環中的'key'是對象中實際鍵的佔位符。當你訪問對象的屬性時,你使用點符號,點右邊的東西是屬性的實際名稱,或者在你的例子中,sample.start

+0

謝謝!以下clarifys這樣:var OBJ = { \t \t名: 「計算器」, \t \t年齡:12 \t} \t VAR鍵= 「姓名」; \t console.log(obj.key); //未定義 – Alan 2014-10-17 15:17:05