Maison  >  Article  >  interface Web  >  Quelle est la différence entre proto et constructor.prototype dans l'héritage JavaScript ?

Quelle est la différence entre proto et constructor.prototype dans l'héritage JavaScript ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-21 14:57:30414parcourir

What's the Difference Between proto and constructor.prototype in JavaScript Inheritance?

Comprendre la différence entre proto et constructor.prototype

Il est important de comprendre la distinction entre la propriété __proto__ et constructor.prototype lorsque vous travaillez avec des objets JavaScript.

proto et Prototype Chain

Chaque objet JavaScript a une propriété interne __proto__ qui fait référence à l'objet prototype de son constructeur. Cet objet prototype contient les propriétés et méthodes partagées pour les objets de son type.

Démonstration

Considérez le code suivant :

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

Gadget.prototype.rating = 3;

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

Dans ce Par exemple, le __proto__ de newtoy pointerait vers Gadget.prototype, qui a la propriété rating avec une valeur de 3. Ainsi, accéder à newtoy.__proto__.__proto__.__proto__ renverrait null car il n'a pas d'autre objet prototype.

constructor.prototype.constructor.prototype

Cette expression complexe n'accède pas directement à la chaîne de prototypes. Au lieu de cela, il tente d'accéder au constructor.prototype du constructor.prototype du constructor.prototype du constructeur Gadget. Dans ce cas, il s'agit du constructeur du Gadget lui-même. Par conséquent, il continue de pointer vers Gadget.prototype.

Vérification de Null dans Internet Explorer

Internet Explorer ne prend pas en charge la propriété __proto__. Pour vérifier null dans ce cas, vous pouvez utiliser la méthode hasOwnProperty() pour déterminer si __proto__ existe. Par exemple :

<code class="js">if (!(newtoy.hasOwnProperty("__proto__"))) {
  // `__proto__` is not supported
}</code>

Représentation visuelle

Pour vous aider à comprendre, voici une carte visuelle de la chaîne de prototypes et de la relation entre __proto__ et constructor.prototype :

[Image de la chaîne de prototypes et des relations __proto__/constructor.prototype]

Ce diagramme simplifié donne un aperçu complet du fonctionnement interne des objets JavaScript, aidant à clarifier la distinction entre ces propriétés et leur rôle dans la chaîne des prototypes.

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
Article précédent:Javascript en sArticle suivant:Javascript en s