我是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循环中列出的原因。
根据我的理解,输出应为:
是真的。
如果我错了,请纠正我?
答案 0 :(得分:1)
来自MDN:
每个对象都有一个propertyIsEnumerable方法。此方法可以确定对象中的指定属性是否可以通过for ... in循环来枚举,除了通过原型链继承的属性。
for..in
将迭代任何对象的可枚举属性,但propertyIsEnumerable
对象的“自有”可枚举属性只有true
,而对于继承的属性,false
只有{{1}}