具有“可枚举”的属性'标志列在for / in循环中?

时间:2014-06-23 10:10:02

标签: javascript

我是javascript的新手,现在就开始学习。我有关于for / in循环的以下查询以及' enumerable' javascript对象属性的属性。

请考虑以下代码段:

var base = {x:1, y:2, z:3}
var derived = Object.create(base)
derived["a"]=4
for(var prp in derived) { console.log(prp, derived.propertyIsEnumerable(prp)) }

对于上面的代码,输出为:

  

真实的   x假
  y false
  z false

据我所知,继承的属性不可枚举,我的问题是它们在for / in循环中列出的原因。

根据我的理解,输出应为:

  

是真的。

如果我错了,请纠正我?

1 个答案:

答案 0 :(得分:1)

来自MDN

  

每个对象都有一个propertyIsEnumerable方法。此方法可以确定对象中的指定属性是否可以通过for ... in循环来枚举,除了通过原型链继承的属性

for..in将迭代任何对象的可枚举属性,但propertyIsEnumerable对象的“自有”可枚举属性只有true,而对于继承的属性,false只有{{1}}