84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
Wie versteht man den Unterschied zwischen Prototyp und __Proto__?
构造函数访问原型时,通常通过prototype来访问,例如我们往原型上添加方法
prototype
Person.prototype.getName = function() {}
当new出来的实例访问原型时,在一些支持的浏览器中
function Person() {} var p1 = new Person(); p1.__proto__ === Person.prototype // true
结论:prototype是作为构造函数去访问原型,而__proto__是作为实例去访问原型。当自身身份不一样,即使一个方法同时调用两者时,访问到的可能是不同的原型。
__proto__
每个对象都有__proto__,而prototype只有Function有;
Function
也许你也可以看看这些:
/a/11...
https://developer.mozilla.org...
prototype 是构造函数的一个属性,__proto__ 是实例的一个属性。使用构造函数生成的实例的 __proto__ 属性会指向构造函数 prototype 属性所指向的对象。
嗯,就是这样。
从作用上来说:prototype 确定了当利用构造器或字面量形式定义对象时 proto 的默认值
proto 是 js 引擎原型链搜索的依据
所以重点在于当你要更改原型链的搜索方式时,可以通过更改构造器 prototype 来改变后续所有实例化对象的原型链查找方式,利用 proto 来修改单个对象的原型链查找.
构造函数访问原型时,通常通过
prototype
来访问,例如我们往原型上添加方法当new出来的实例访问原型时,在一些支持的浏览器中
结论:
prototype
是作为构造函数去访问原型,而__proto__
是作为实例去访问原型。当自身身份不一样,即使一个方法同时调用两者时,访问到的可能是不同的原型。每个对象都有
__proto__
,而prototype
只有Function
有;也许你也可以看看这些:
/a/11...
https://developer.mozilla.org...
https://developer.mozilla.org...
prototype
是构造函数的一个属性,__proto__
是实例的一个属性。使用构造函数生成的实例的__proto__
属性会指向构造函数prototype
属性所指向的对象。嗯,就是这样。
从作用上来说:
prototype 确定了当利用构造器或字面量形式定义对象时 proto 的默认值
proto 是 js 引擎原型链搜索的依据
所以重点在于当你要更改原型链的搜索方式时,可以通过更改构造器 prototype 来改变后续所有实例化对象的原型链查找方式,利用 proto 来修改单个对象的原型链查找.