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!