__proto__ VS. prototype en JavaScript
Cette figure montre à nouveau que chaque objet a un prototype. La fonction constructeur Foo a également la sienne __proto__
qui est Function.prototype, et qui à son tour fait également référence via sa __proto__
propriété à Object.prototype. Ainsi, répétez, Foo.prototype est juste une propriété explicite de Foo qui fait référence au prototype des objets b et c.
var b = new Foo(20);
var c = new Foo(30);
Quelles sont les différences entre __proto__
et prototype
?
Le chiffre a été tiré de dmitrysoshnikov.com.
Remarque : il existe maintenant une 2e édition (2017) de l'article de 2010 ci-dessus.
Solution du problème
__proto__
est l'objet réel qui est utilisé dans la chaîne de recherche pour résoudre les méthodes, etc. prototype
est l'objet qui est utilisé pour construire __proto__
lorsque vous créez un objet avec new
:
( new Foo ).__proto__ === Foo.prototype
( new Foo ).prototype === undefined
Commentaires
Enregistrer un commentaire