gpt4 book ai didi

javascript - 为什么 "for-in"循环不遍历原型(prototype)属性?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:16:55 24 4
gpt4 key购买 nike

让我们创建一个新对象:

var dict = {};

已知的事实是,在创建一个新对象后,这个新对象继承了 Object.prototype 。因此,当我尝试检查原型(prototype)的属性是否被继承时,我在 obj 中执行了 "toString",为此我得到了 true。但是当我想将新创建的对象的所有属性放入一个数组中时,我会发现数组在填充完成后是空的。看看下面的代码:

var names = [];

for (var name in dict) {
names.push(name);
};
names.length;

不明白为什么会这样。

最佳答案

很多评论说,For-In循环只枚举原型(prototype)链中可枚举的属性,继承的toString属性是不可枚举的。

如果您想遍历 object 原型(prototype)的不可枚举属性以查看“ToString”是否存在,那么您应该获取对象原型(prototype)并获取其可枚举和不可枚举属性,使用getOwnPropertyNames 方法:

var dict = {};
var objPrototype = Object.getPrototypeOf(dict);

var propertyNames = Object.getOwnPropertyNames(objPrototype);

propertyNames.length;

关于javascript - 为什么 "for-in"循环不遍历原型(prototype)属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27093062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com