我一直在测试 JavaScript 的Object.prototype.hasOwnProperty
. 据我了解,它旨在从继承的对象属性中清除直接对象属性。
但是,在迄今为止我测试过的人为示例(包括MDN自己的示例)中,我在控制台记录继承属性(即toString
)时.hasOwnProperty()
没有成功false
,这让我对其功能有点怀疑。所以,
1)您能否提供我可以在控制台中运行的示例代码,它会在hasOwnProperty()
返回时记录继承的属性false
?
2)当向这个问题添加hasOwnProperty标签时,弹出的SO描述状态“ ......不遍历原型链”。如果是这样的话,下面 Mozilla 的例子有什么意义,因为 "else 子句永远不会被执行?
这是 Mozilla 的示例代码:
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
}
}