Maison  >  Article  >  interface Web  >  En quoi consiste la chaîne de prototypes js ? Quel rôle joue-t-il dans l’héritage ?

En quoi consiste la chaîne de prototypes js ? Quel rôle joue-t-il dans l’héritage ?

php是最好的语言
php是最好的语言original
2018-07-28 09:38:184527parcourir

En combinant l'image suivante et un exemple simple, vous pouvez d'abord comprendre la relation entre le constructeur, l'objet prototype et l'objet instance. Regardons d'abord ce diagramme de description simple.

En quoi consiste la chaîne de prototypes js ? Quel rôle joue-t-il dans l’héritage ?

Cette image décrit la relation entre le constructeur, l'objet prototype et l'objet instance : La chaîne de prototypes est essentiellement basé sur la relation entre ces trois

À partir de la figure ci-dessus, nous pouvons voir que chaque constructeur a un objet prototype (prototype), et l'objet prototype a un pointeur vers le constructeur, pointant vers le constructeur. constructeur lui-même

Remarque : l'attribut prototype n'existe que dans la fonction, l'attribut prototype n'existe pas dans l'objet, mais l'attribut _proto_ existe dans tous les objets

Le Voici un exemple pour illustrer la relation entre eux. L'exemple ci-dessous correspond à l'image ci-dessus

En quoi consiste la chaîne de prototypes js ? Quel rôle joue-t-il dans l’héritage ?

Nous définissons d'abord un constructeur de A puis un nouveau Objet d'instance a

1.A.prototype représente le objet prototype deux attributs constructeur et _proto_

2.A.prototype.constructor===A Objet prototype L'attribut constructeur d'attribut correspond au constructeur lui-même

3.A.prototype===a.__proto__ Comme le montre la figure ci-dessus, le _proto_ de l'objet instance pointe vers l'objet prototype

4.a.__proto__===A.prototype L'attribut _proto_ de l'objet instance a pointe vers l'objet prototype

5.a Il existe un attribut commun _proto_

de l'objet instance a combiné avec la figure ci-dessus et avec cet exemple simple, vous pouvez comprendre la relation entre ces trois

Parlons de la façon dont la chaîne de prototypes js tourne autour de ces relations. Regardons d'abord une image

En quoi consiste la chaîne de prototypes js ? Quel rôle joue-t-il dans l’héritage ?

Cette image n'est pas très différente de la première image, mais elle représente le processus de recherche d'un prototype de chaîne

Laissez-moi l'expliquer avec un exemple. il est basé sur cette image et le cas. Plus facile à comprendre

En quoi consiste la chaîne de prototypes js ? Quel rôle joue-t-il dans l’héritage ?

Nous avons ajouté l'attribut name à la fois à l'objet d'instance a et à l'objet prototype lorsque nous imprimons a.name, le résultat est 111.

Mais lorsque nous supprimons l'attribut name de l'objet d'instance a et lisons a.name, le résultat est 222.

En effet, si l'attribut name n'est pas trouvé dans l'objet a, il sera recherché à partir du prototype de a, qui est a.__proto__

, c'est-à-dire A.prototype. Puisque la recherche est dans A.prototype. Lorsque l'attribut name est trouvé, le résultat est 222.

Ici, nous supposons que nous ne trouvons pas l'attribut name sur A.prototype, car A.prototype est aussi un objet et possède un attribut _proto_,

Donc le prototype du A.prototype le prototype est A.prototype._proto_

Donc

A.prototype.__proto__===Object.prototype est vrai

Le prototype de A. prototype est Object.prototype puis Object. Le prototype de prototype._proto_ peut être vu dans l'exemple ci-dessus comme null

Remarque : null est une valeur spéciale mais son type est un objet mais il n'a pas d'attributs. , donc il n'y a pas de prototype pour trouver null Lorsque la chaîne de prototypes se termine

Donc cette chaîne de prototypes a--A.prototype--Object.prototype-- null est la ligne de processus bleue ci-dessus

Les opérations et explications ci-dessus peuvent m'aider à comprendre le processus et les opérations de la chaîne de prototypes. Cependant, il reste encore beaucoup à faire pour l'appliquer à la conception du code.

L'héritage fait partie du langage OO. Une chose importante. De nombreux langages OO prennent en charge deux méthodes d'héritage :

L'héritage d'interface et L'héritage d'implémentation. la signature de la méthode, tandis que l'héritage d'implémentation hérite de la méthode réelle. Puisqu'il n'y a pas de signature pour les méthodes dans js et que l'héritage d'interface ne peut pas être implémenté dans ECMAScript, ECMAScript ne prend en charge que l'héritage d'implémentation, et son est principalement implémenté en s'appuyant sur le <.>Chaîne de prototypes 实现继承. 🎜>Héritage JavaScript et chaîne de prototypes

Héritage de chaîne de prototypes et héritage de classe

Vidéos associées :

Tutoriel sur le formulaire de vérification du développement JS

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