当迭代一个对象时,使用obj.key引用值all get" undefined"而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 :(得分:0)
不,他们不一样。当您对对象和您正在查找的属性进行属性查找时,或者在此示例中,键需要使用括号表示法,以及其他内容的占位符。例如,' key'在for for循环中,是对象中实际键的占位符。当您访问对象的属性时,您使用点符号,点右侧的东西是属性的实际名称,或者在您的示例中,sample.start