__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?

enter image description here

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. prototypeest 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

Posts les plus consultés de ce blog

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Détecter les appuis sur les touches fléchées en JavaScript

Une chaîne vide donne "Des erreurs ont été détectées dans les arguments de la ligne de commande, veuillez vous assurer que tous les arguments sont correctement définis"