如果你想在迭代对象的所有属性时访问某个属性,那么这个对象的属性应该是可枚举的。例如:
var obj = {prop1: 'val1', prop2:'val2'};
for (var prop in obj){
console.log(prop, obj[prop]);
}
在这种实例化方式中,enumerable 总是为 true,这将给你一个输出:prop1 val1
prop2 val2
如果你使用了如下的代码 Object.create():
obj = Object.create({}, { prop1: { value: 'val1', enumerable: true}, prop2: { value: 'val2', enumerable: false} });
你的for循环只会访问prop1,而不是prop2。使用Object.create()时,属性默认设置为不可枚举。
Object.create
中,enumerable
默认为false。 - Raynos