__proto__
总而言之,我总是被对象的和属性弄糊涂prototype
,尤其是在原型继承链中,假设有一个名为 的对象test
,代码如下。
test.add();//try to call a method name add.
在我的理解中,我画了一个图表来演示搜索的流程。但我不确定它是否正确。请帮助审查它。谢谢。
根据 Minko Gechev 的回答对其进行了更正。
__proto__
总而言之,我总是被对象的和属性弄糊涂prototype
,尤其是在原型继承链中,假设有一个名为 的对象test
,代码如下。
test.add();//try to call a method name add.
在我的理解中,我画了一个图表来演示搜索的流程。但我不确定它是否正确。请帮助审查它。谢谢。
根据 Minko Gechev 的回答对其进行了更正。
只有函数有prototype
属性,但任何对象都有__proto__
属性。
通常,__proto__
最好使用类似Object.create
.
这是一个例子:
function Person() {
}
var proto = { bar: 'baz' };
Person.prototype = proto;
这样,您使用构造函数创建的任何对象都Person
将具有__proto__
引用的属性proto
作为结论,我们可以说:
原型属性仅用于构造函数,它设置__proto__
将使用此构造函数创建的所有对象的属性。当解释器在寻找给定对象的属性时,foo
它首先使用该对象,然后再使用该对象foo
,foo.__proto__
依此foo.__proto__.__proto__
类推,无论是否找到该属性。