深入理解js系列-对象枚举中的obj.[prop]与obj.['prop']

249 阅读1分钟

JavaScript中对象枚举

在数组中我们可以通过数组的长度来获得每一项的内容,但是在一个对象里面,计算机本身不知道对象的长度,那么要遍历对象的每一个长度就用到了for-in循环。

var obj = {
    name:'13',
    age: 13,
    sex : "male"
}
for (var prop in obj) {
    console.log(prop + typeof(prop));
}

其中prop是string类型。循环的时候会把obj每一项的值放到变量prop中。上述打印的结果是属性名加string。那么如果我们想知道obj中每一个属性的属性值应该怎么做呢? 可能第一反应就是obj.prop。但是这样打印出来结果全部是undefined,如果大家不相信可以自己敲一敲。其原因如下:

系统底层obj.name会转换成obj['name']。那么obj.prop就是obj['prop'].系统会认为是在访问prop这个属性,而不是prop这个变量。所以是obj[prop]来表示prop这个变量,代表着不同的字符串。