Object.create中的可枚举参数是什么?

7
在哪些使用Object.create时,您想将enumerable设置为true

1
模拟非枚举属性 - Raynos
1个回答

13

如果你想在迭代对象的所有属性时访问某个属性,那么这个对象的属性应该是可枚举的。例如:

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
谢谢,我指的是另一个实例化。我忘了提到这一点。我会编辑我的答案。 - André Alçada Padez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接