Maison >interface Web >js tutoriel >Quelle est la différence entre « .prototype » et « .__proto__ » de JavaScript ?

Quelle est la différence entre « .prototype » et « .__proto__ » de JavaScript ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-18 04:54:10301parcourir

What's the Difference Between JavaScript's `.prototype` and `.__proto__`?

Comprendre la distinction entre .prototype et .__proto__

Dans le domaine de JavaScript, les objets interagissent les uns avec les autres via l'héritage et les chaînes de prototypes. Deux concepts critiques qui jouent un rôle central dans ce mécanisme d'héritage sont .prototype et .__proto__. Bien qu'elles semblent similaires, ces propriétés remplissent des fonctions distinctes.

.prototype

.prototype est une propriété d'une fonction constructeur qui sert de modèle pour créer de nouveaux objets. Lorsque vous instanciez une fonction constructeur avec new, l'objet résultant possède une propriété .__proto__ qui pointe vers l'objet .prototype de la fonction constructeur. Cet objet .__proto__ contient des propriétés et des méthodes héritées par l'objet nouvellement créé.

.__proto__

.__proto__ est une propriété d'un objet qui fait référence à l'objet prototype. à partir duquel l'objet a été créé. Il permet à l'objet d'accéder aux propriétés et méthodes définies dans le prototype. .__proto__ joue un rôle crucial dans la chaîne d'héritage, permettant aux objets d'hériter des propriétés et des méthodes de leurs objets parents.

Différences clés

La principale différence entre .prototype et .__proto__ réside dans leurs rôles :

  • .prototype : Fournit le modèle utilisé pour créer de nouveaux objets.
  • .__proto__ : Fait référence à l'objet prototype à partir duquel l'objet actuel a été créé.

De plus, .prototype est un propriété de la fonction constructeur, tandis que .__proto__ est une propriété des objets individuels.

Pratique Exemple

Considérons le code suivant :

function Foo(value) { this.value = value; }
Foo.prototype.getValue = function() { return this.value; };
var b = new Foo(20);
var c = new Foo(30);

Dans cet exemple, .prototype est associé à la fonction constructeur Foo. Il définit une méthode getValue qui peut être héritée par les objets créés avec new Foo. .__proto__ est une propriété de b et de c, faisant référence à l'objet Foo.prototype. Grâce à cette référence .__proto__, b et c peuvent accéder à la méthode getValue héritée.

Conclusion

.prototype et .__proto__ sont des concepts essentiels dans l'héritage JavaScript. Comprendre leurs fonctions distinctes et la manière dont elles interagissent les unes avec les autres est crucial pour une programmation orientée objet efficace en JavaScript.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn