gpt4 book ai didi

javascript - 带有 'enumerable' 标志的属性是否列在 for/in 循环中?

转载 作者:行者123 更新时间:2023-12-03 12:22:42 25 4
gpt4 key购买 nike

我是 javascript 新手,现在正在学习。我有以下关于 for/in 循环和 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)) }

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

a true
x false
y false
z false

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

根据我的理解,输出应该是:

a true.

如有错误请指正?

最佳答案

来自MDN :

Every object has a propertyIsEnumerable method. This method can determine whether the specified property in an object can be enumerated by a for...in loop, with the exception of properties inherited through the prototype chain.

for..in 将迭代对象的任何可枚举属性,但 propertyIsEnumerable 仅对于对象的“自己”为 true可枚举属性,false 表示继承属性。

关于javascript - 带有 'enumerable' 标志的属性是否列在 for/in 循环中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24363316/

25 4 0