Javascript枚举对象值:obj.key与obj[key]的区别

Javascript enumerate object value: the difference obj.key vs obj[key]

本文关键字:key obj 区别 枚举 Javascript 对象      更新时间:2023-09-26

当遍历一个对象时,使用obj.key引用的值都会变为"未定义",而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);
})
不,它们不完全相同。当您对对象进行属性查找时,需要使用括号表示法,并且您正在查找的属性,或者在本例中的"key",是其他内容的占位符。例如,For in循环中的"key"是对象中实际键的占位符。当您访问对象的属性时,您使用点表示法,点右边的是属性的实际名称,或者在您的示例中,sample.start