Maison > Article > interface Web > Qu'est-ce qu'une chaîne de prototypes en js
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
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 prototypesfunction 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 protoCet attribut est un attribut pris en charge par le navigateur, pas un attribut dans ECMAScript2 .Object.getPrototypeOf3 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!