Maison >interface Web >js tutoriel >Comment l'héritage JavaScript affecte-t-il la propriété Constructor et l'opérateur « instanceof » ?
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.
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.
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.
Pour mettre à jour la propriété du constructeur dans votre chaîne d'héritage JavaScript, vous pouvez suivre ces étapes :
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!