我编写了以下 javascript,并期望看到列出的 Obj2 中的所有属性以及(我认为的)基类 - Object 的属性。为什么我看不到像prototype和toString这样的属性与一和二一起列出?
Obj2 = function() {
this.one = "one";
this.two = "two";
}
var obj2 = new Obj2();
for(var i in obj2) {
try {
console.log(i + ": " + obj2[i]);
}
catch(e) {
console.log(i + " caused error: " + e);
}
}
最佳答案
正如lan所说,for ... in
仅在可枚举属性上进行迭代,如果您想获取实例的所有属性(可枚举或不可枚举),您可以尝试
Object.getOwnPropertyNames()
function Obj2() {
this.one = "one";
this.two = "two";
}
var obj2 = new Obj2(),
proto = obj2,
keys = Object.getOwnPropertyNames(proto);
while (proto) {
for (var i in keys) {
try {
console.log(keys[i] + ": " + proto[keys[i]]);
} catch (e) {
console.log(i + " caused error: " + e);
}
}
proto = Object.getPrototypeOf(proto);
keys = proto ? Object.getOwnPropertyNames(proto) : null;
}
关于javascript - 为什么 for...in 不打印对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17244301/