javascript - 如何迭代对象原型(prototype)的属性

标签 javascript prototype prototype-chain

我有一些代码:

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/

相关文章:

javascript - native 脚本中的 iOS 3D Touch 支持

javascript - 有没有办法检查 var 是否正在使用 setInterval()?

javascript - 如何使用javascript每5秒重新加载一次img?

javascript - 扩展原型(prototype)函数 JavaScript

javascript - 如何链接两个构造函数并将它们作为对象的原型(prototype)继承?

通过 Object.create 从原始值继承 JavaScript 对象

javascript - 单选按钮颜色在 IE 11 中默认为黑色,但在 IE 8 中默认为蓝色。如何使 IE 11 的单选按钮与 IE 8 相同?

javascript - 从另一个对象创建新的且不同的对象的最佳方法

javascript - 为什么 JavaScript 对象的这个扩展不起作用?

javascript - 重构具有相同原型(prototype)属性的对象