Maison  >  Article  >  interface Web  >  Un concept plus difficile à comprendre dans le prototype JavaScript

Un concept plus difficile à comprendre dans le prototype JavaScript

零下一度
零下一度original
2017-07-24 09:30:301479parcourir

Le prototype est un concept difficile à comprendre en JavaScript. Il existe de nombreux attributs liés au prototype. Les objets ont des attributs "prototype", les objets fonction ont des attributs "prototype" et les objets prototypes ont des attributs "constructeur". .

1.Première introduction aux prototypes
En JavaScript, le prototype est aussi un objet. L'héritage des propriétés de l'objet peut être réalisé grâce au prototype. Les objets JavaScript contiennent tous un "[[Prototype]]". propriété interne.Cet attribut correspond au prototype de l'objet.
"[[Prototype]]" est une propriété interne de l'objet et n'est pas accessible directement. Ainsi, afin de visualiser facilement le prototype d'un objet, Firefox et Chrome fournissent l'accesseur __proto__ non standard (non pris en charge par tous les navigateurs) (ECMA a introduit l'accesseur de prototype d'objet standard "Object.getPrototype(object)") . L'objet prototype de JavaScript contient également un attribut "constructeur", qui correspond au constructeur qui crée toutes les instances pointant vers le prototype

2. Règles
En JavaScript, chaque fonction possède un attribut prototype lorsqu'un. La fonction est utilisée comme constructeur pour créer une instance, la valeur de l'attribut prototype de cette fonction sera attribuée à toutes les instances d'objet en tant que prototype (c'est-à-dire que l'attribut `__proto__` de l'instance est défini), c'est-à-dire la valeur de l'attribut prototype de toutes les instances Le prototype fait référence à l'attribut prototype de la fonction. (****`Seuls les objets fonction auront cet attribut !`****)

Le processus de création de nouveau est divisé en trois étapes

?

var p = new Person('Zhang San',20);

1. var p={};
2. p._proto_=Person.prototype;, définissez l'attribut __proto__ de l'objet p sur Person.prototype
3 Person.call(p,"Zhang San",20);Appelez le constructeur Person pour initialiser. p. À propos de l'utilisation de call/apply

Par exemple :
Il existe les scénarios suivants
L'homme étend la personne étend l'objet
var a = new Man();
Le prototype de a est Man.prototype
Man.prototype est également un objet, il a donc également un pointeur pointant vers son propre prototype, qui est Person.prototype
De même, Person.prototype Le prototype est Object.prototype
Object.prototype est également un objet, sauf que son prototype est nul, alors il a atteint la fin de la chaîne des prototypes
Le lien du prototype de a est comme indiqué ci-dessous

Retenez une chose : le prototype d'un objet est le prototype de son constructeur En prenant comme exemple l'objet a dans l'image ci-dessus, c'est-à-dire : un. .__proto__ === Homme.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