Maison  >  Article  >  interface Web  >  Qu'est-ce qu'une chaîne de prototypes en js

Qu'est-ce qu'une chaîne de prototypes en js

anonymity
anonymityoriginal
2019-05-29 10:59:244202parcourir

Chaque constructeur a un objet prototype. L'objet prototype contient un pointeur vers le constructeur et l'instance contient un pointeur vers l'objet prototype. Nous rendons l'instance de l'objet prototype (1) égale à un autre objet prototype (2),

A ce moment, l'objet prototype (2) contiendra un pointeur vers l'objet prototype (1),

Ensuite Que l'instance de l'objet prototype (2) soit égale à l'objet prototype (3). Cette progression couche par couche forme une chaîne d'instances et de prototypes. C'est le concept de la chaîne prototype

Qu'est-ce qu'une chaîne de prototypes en js

Chaîne de prototypes

Chaque constructeur a un objet prototype, et chaque instance de constructeur contient un pointeur interne (proto) pointant vers l'objet prototype .Si nous laissons le premier constructeur L'objet prototype est égal à l'instance du deuxième constructeur. Par conséquent, l'objet prototype du premier constructeur contiendra un pointeur vers le deuxième objet prototype. Le troisième objet prototype est égal à l'instance. du premier constructeur, de sorte que l'objet prototype du premier constructeur soit égal à l'objet prototype du deuxième constructeur. Les trois objets prototypes contiendront également des pointeurs vers le premier objet prototype, et ainsi de suite, ce qui suffit pour former un. chaîne d'instances dans le prototype. C'est le concept de base de la chaîne de prototypes

function One(){
 }
 function Two(){
 }
 function Three(){
 }
 Two.prototype=new One();
 Three.prototype=new Two();
 var three=new Three();
 console.log(three);
 console.log(three.__proto__===Three.prototype) //true
 console.log(three.__proto__.__proto__===Two.prototype) //true
 console.log(three.__proto__.__proto__.__proto__===One.prototype)  //true
 console.log(three.__proto__.__proto__.__proto__.__proto__===Object.prototype)  //true

Dans les instances d'objet, la méthode d'accès au prototype d'objet

1. Attribut proto

Cet attribut est un attribut pris en charge par le navigateur, pas un attribut dans ECMAScript

2 .Object.getPrototypeOf

3 Utilisez la méthode constructor.prototype<.>

Pour les navigateurs qui ne prennent pas en charge proto, vous pouvez utiliser le constructeur pour accéder au constructeur de l'objet et utiliser le prototype pour accéder au prototype

Utiliser la chaîne de prototypes pour expliquer la portée d'ANUGLAR

Pendant le processus de développement, nous pouvons avoir une imbrication de contrôleurs. Regardez le code suivant :

  <div ng-controller="OuterCtrl">
        <span>{{a}}</span>
         <div ng-controller="InnerCtrl">
            <span>{{a}}</span>
         </div>
     </div>
    <script>
    function OuterCtrl($scope) {
    $scope.a = 1;
    }
    function InnerCtrl($scope) {
    }
    </script>

Nous pouvons voir L'interface affiche deux 1, et nous avons uniquement défini la variable a dans la portée d'OuterCtrl, mais la variable a est définie dans le champ d'application de OuterCtrl. Le résultat qui nous est donné par l'interface est que les deux a ont des valeurs. Maintenant, a dans l'auto-contrôleur est hérité du contrôleur parent. En venant

, nous pouvons considérer la portée parent-enfant comme deux objets prototypes, dont l'un hérite de l'instance de l'autre objet prototype

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