Maison  >  Article  >  interface Web  >  Quelle est la différence entre proto et Constructor.prototype en JavaScript ?

Quelle est la différence entre proto et Constructor.prototype en JavaScript ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-21 10:08:02849parcourir

What is the Difference Between proto and Constructor.prototype in JavaScript?

Les différences entre proto et constructor.prototype

La propriété proto d'un objet fait référence à son objet prototype, qui contient des propriétés et des méthodes partagées. En revanche, constructor.prototype pointe vers la propriété prototype de la fonction constructeur de l'objet.

L'exemple suivant illustre la distinction :

<code class="javascript">function Gadget(name, color) {
  this.name = name;
  this.color = color;
}

Gadget.prototype.rating = 3;

var newtoy = new Gadget("webcam", "black");</code>

Dans ce cas, newtoy.__proto__ pointe vers Gadget. prototype, qui a la note de propriété, tandis que newtoy.constructor.prototype pointe également vers Gadget.prototype. Cependant, newtoy.constructor.prototype.constructor.prototype.constructor.prototype renvoie null car il n'y a pas d'autre prototype au-delà de Object.prototype.

C'est parce que proto est une référence directe au objet prototype, tandis que constructor.prototype suit la chaîne de prototypes. Lorsque vous accédez plusieurs fois à constructor.prototype, vous parcourez la chaîne de prototypes jusqu'à atteindre le niveau supérieur Object.prototype.

Dans Internet Explorer, il n'y a pas de propriété __proto__. Au lieu de cela, vous pouvez utiliser l'attribut [[Prototype]] pour accéder au prototype d'un objet. Cependant, cet attribut n'est pas accessible dans le code JavaScript standard.

Le référencement aux objets prototypes peut vous aider à comprendre la hiérarchie d'héritage en JavaScript et fournit un mécanisme de partage de propriétés et de méthodes entre objets associés.

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