JavaScript对象原型中毒

ank*_*yAS 5 javascript

我试图了解如何在javascript中使用object.prototype函数然后我遇到了这段代码.我不明白?

// Poisoning Object.prototype
Object.prototype.bar = 1;
var foo = {goo: undefined};

foo.bar; // 1
'bar' in foo; // true

foo.hasOwnProperty('bar'); // false
foo.hasOwnProperty('goo'); // true
Run Code Online (Sandbox Code Playgroud)

foo有属性栏,它在第3行中定义并且值为undefined.请指导为什么在这种情况下foo.hasOwnProperty('bar')返回false

Sur*_*yan 5

JavaScript 中的所有对象都源自Object. 所有对象都继承自 的方法和属性Object.prototype

在您的示例中,当您尝试获取 时,它在 中foo.bar找不到,因此它将转到 的原型并尝试在那里找到它。barfoofoo

hasOwnProperty - 只检查您的foo.

这是你的foo样子

在此输入图像描述

为了深入理解,您可以阅读本章。

你不懂JS