var foo = {
bar : 5
}
为什么
foo.hasOwnProperty('__proto__')
的结果是false
?这不可能来自于原型链中更高层的任何对象,因为它是特定于此对象的。
编辑:
有些答案说它在
Object.prototype
上。但我不明白这有什么道理。我的问题不在于它在哪里,而在于为什么它不在应该在的地方。
例如:
var a = new Foo();
var b = new Bar();
// Foo inherits from Bar
那么 a.__proto__
和 b.__proto__
不应该相等吗?
因为它们都读取自 Object.prototype
?
Object.prototype.__proto__
有一个getter函数,当在不同的对象上调用时会返回不同的结果。例如,如果您运行Object.defineProperty(Object.prototype, 'self', {get: function(){return this}})
,您可以在不同的对象上调用.self
并获得不同的结果。 - Oriol