我在 MDN(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty)上看到了这样的代码片段:
var buz = {
fog: 'stack'
};
for (var name in buz) {
if (buz.hasOwnProperty(name)) {
console.log('this is fog (' + name + ') for sure. Value: ' + buz[name]);
}
else {
console.log(name); // toString or something else
}
}
在这段代码中,
console.log(name); // toString or something else
对我来说有点令人困惑。我知道toString
是Object.prototype
的一个属性,并且可以通过buz.toString
访问该属性。然而,当我在Chrome中运行该代码时,我没有看到
toString
属性被打印出来(console.log),尽管注释说它应该被for..in
迭代并打印出来。是否有人有关于为什么原型链上的属性不能被"for..in"迭代的想法?
Object.prototype.toString
是一个不可枚举的属性。 - Bergi