我有一些代码:
var obj = function() { }; // functional object
obj.foo = 'foo';
obj.prototype.bar = 'bar';
for (var prop in obj) {
console.log(prop);
}
令我惊讶的是,所有记录的都是foo
。我希望 for 循环也遍历 obj
原型(prototype)的属性(即 bar
),因为我没有检查 hasOwnProperty
。我在这里错过了什么?是否也有一种惯用的方法来遍历原型(prototype)中的所有属性?
我在 Chrome 和 IE10 中对此进行了测试。
提前致谢。
最佳答案
您正在迭代构造函数的属性,您必须创建一个实例。实例是从构造函数的 prototype
属性继承的:
var Ctor = function() { }; // constructor function
Ctor.prototype.bar = 'bar';
var obj = new Ctor(); // instantiation
// adds own property to instance
obj.foo = 'foo';
// logs foo and bar
for (var prop in obj) {
console.log(prop);
}
关于javascript - 如何迭代对象原型(prototype)的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18988303/