Maison >interface Web >js tutoriel >Comment l'héritage JavaScript affecte-t-il la propriété Constructor et l'opérateur « instanceof » ?

Comment l'héritage JavaScript affecte-t-il la propriété Constructor et l'opérateur « instanceof » ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-09 00:03:12849parcourir

How Does JavaScript Inheritance Affect the Constructor Property and `instanceof` Operator?

Héritage JavaScript et propriété du constructeur

L'héritage JavaScript implique la création d'une nouvelle classe, appelée classe dérivée, à partir d'une classe existante, appelée classe de base. La classe dérivée hérite des propriétés et méthodes de la classe de base. En JavaScript, l'héritage est obtenu en définissant le prototype de la classe dérivée sur une instance de la classe de base. Cependant, cela peut soulever des questions sur la propriété constructeur et l'opérateur instanceof.

Pourquoi le constructeur n'est-il pas mis à jour pour b et c ?

Dans le code fourni, vous créez des fonctions a , b et c pour démontrer l'héritage. Cependant, lorsque vous enregistrez le constructeur pour les instances de b et c, vous remarquez qu'il s'agit du constructeur de la classe de base (a()). En effet, lorsque vous définissez le prototype d'une classe dérivée sur une instance de la classe de base, vous liez effectivement la classe dérivée au prototype de la classe de base. Par conséquent, la propriété constructeur des instances de classe dérivées continue de pointer vers le constructeur de la classe de base.

L'héritage est-il effectué de manière incorrecte ?

Le mécanisme d'héritage que vous utilisez n'est pas incorrect. L'héritage est obtenu en liant la chaîne de prototypes, et c'est ce que vous faites dans votre code.

Comment mettre à jour le constructeur ?

Pour mettre à jour la propriété du constructeur dans votre chaîne d'héritage JavaScript, vous pouvez suivre ces étapes :

  1. Créez une fonction constructeur personnalisée pour la classe dérivée.
  2. Définissez la propriété constructeur de l'objet prototype de la classe dérivée vers le constructeur personnalisé.
  3. Mettez à jour la propriété constructeur des instances de classe dérivée vers le constructeur personnalisé.

Comment instanceof détermine-t-il le type d'instance ?

L'opérateur instanceof ne s'appuie pas sur la propriété constructeur de l'instance. Au lieu de cela, il parcourt la chaîne de prototypes de l'instance et vérifie si sa propriété interne [[proto]] correspond à la propriété prototype de la fonction constructeur. S'il y a une correspondance, elle renvoie vrai, indiquant que l'instance appartient à ce constructeur. Cela permet à l'opérateur instanceof de déterminer avec précision le type d'une instance même si la propriété constructeur est mal définie.

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