Maison >interface Web >js tutoriel >Différencier proto et Constructor.prototype : quelle est la distinction clé ?
Comprendre les différences entre proto et Constructor.prototype
La propriété proto et la constructor.prototype sont des concepts étroitement liés en JavaScript qui prêtent souvent à confusion. Cet article vise à clarifier leurs distinctions.
__proto__ :
proto est une propriété interne des objets JavaScript qui pointe vers leur objet prototype. L'objet prototype contient des propriétés et des méthodes héritées par les instances de cet objet. Les objets héritent de leur propriété proto de leur fonction constructeur.
Dans l'exemple, newtoy.__proto__ renvoie l'objet Gadget.prototype, qui contient la propriété rating héritée.
constructor.prototype :
La propriété constructor.prototype d'une fonction fait référence au prototype objet de la fonction. Lorsqu'un objet est créé à l'aide du mot-clé new, le prototype de sa fonction constructeur devient le prototype du nouvel objet.
Dans l'exemple, newtoy.constructor.prototype renvoie l'objet Gadget.prototype, qui possède la propriété rating héritée.
Chaîne prototypique :
Les deux proto et constructor.prototype participent à la chaîne prototypique, un mécanisme en JavaScript qui permet aux objets d'hériter des propriétés et des méthodes de leurs objets prototypes.
newtoy.__proto__.constructor.prototype.constructor. prototype.constructor.prototype renvoie l'objet Gadget.prototype, qui hérite de Function.prototype et se termine finalement à Object.prototype.
Internet Explorer :
Internet Explorer n'a pas de propriété proto. Pour vérifier null dans ce contexte, il est possible d'utiliser la méthode hasOwnProperty() pour déterminer si l'objet contient une propriété spécifique.
Par exemple :
<code class="javascript">if (Object.hasOwnProperty("__proto__")) { // __proto__ property is available } else { // __proto__ property is not available }</code>
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!