让我们创建一个新对象:
var dict = {};
已知事实是,在创建新对象后,此新对象将继承Object.prototype
。因此,当我尝试检查原型属性是否被继承时,我会"toString" in obj
为true
获取var names = [];
for (var name in dict) {
names.push(name);
};
names.length;
。但是当我想将新创建的对象的所有属性放入一个数组中时,我会看到在完成填充后数组是空的。看看下面的代码:
{{1}}
无法理解为什么会发生。
答案 0 :(得分:2)
正如许多人在评论中所说,For-In循环只枚举原型链中的可枚举属性,并且继承的toString
属性不可枚举。
如果要遍历object
原型的非可枚举属性以查看是否存在“ToString”,那么您应该获取对象原型并使用{{获取其可枚举和不可枚举的属性1}}方法:
getOwnPropertyNames