让我们创建一个新的对象:为什么“for-in”循环不会遍历原型属性?
var dict = {};
众所周知的事实是,创建一个新的对象之后,这个新对象继承了Object.prototype
。所以当我试图检查原型的属性是否被继承时,我做了"toString" in obj
,对此我得到了true
。但是当我想将新创建的对象的所有属性放入一个数组中时,我会在填满后看到数组为空。看看下面的代码:
var names = [];
for (var name in dict) {
names.push(name);
};
names.length;
不明白为什么会发生。
因为它们不是可枚举的。 – elclanrs 2014-11-23 19:08:41
并非所有属性都是可枚举的(您可以使用属性描述符自己创建不可枚举的属性)。这意味着您可以通过名称访问它们,但不会列出它们。 – slezica 2014-11-23 19:08:43
这里是一个证明链接:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in – 2014-11-23 19:25:37