Cet article vous apporte une brève introduction aux prototypes et aux chaînes de prototypes en JavaScript. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
[[Prototype]]
Presque tous les objets généreront une chaîne [[Prototype]] lors de leur création, ce que les gens appellent souvent la chaîne de prototypes. Lorsque vous essayez Lors du référencement des propriétés d'un objet, l'opération [[Get]] de l'objet sera déclenchée. Pour l'opération [[Get]] par défaut, la première étape consiste à déterminer si l'objet actuel possède la propriété souhaitée. à référencer. Si c'est le cas, il l'utilisera. S'il n'est pas trouvé, il recherchera la chaîne prototype de cet objet :
var one = { type: 'one' } var two = Object.create(one) console.log(two.type) // one
Dans l'exemple ci-dessus, il n'y a pas d'attribut de type. dans les deux objets, mais parce que Object.create (Créer un nouvel objet avec l'objet prototype et les attributs spécifiés) pour connecter un objet et les deux objets. Par conséquent, pendant le processus de recherche de la chaîne de prototypes, même si l'attribut type est. introuvable dans les deux objets, la recherche continuera vers le haut, et dans celui-ci, recherchez l'attribut type dans l'objet et imprimez-le. Si vous recherchez tout le long de la chaîne de prototypes et ne trouvez rien, il s'imprimera non défini
<.>prototype
Expliquez clairement ce qu'est le prototype Prenons d'abord un exemple simple :function origin(type) { this.type = type console.log(this.type) } origin.prototype.name = 'origin' var son1 = new origin('male') var son2 = new origin('male') console.log(son1.name) // origin console.log(son2.name) // origin
constructeurRegardons d'abord un exemple simple :
origin.prototype a un attribut public et non énumérable, constructeur, par défaut et cet attribut fait référence à la fonction associée à l'objet, donc origin.prototype.construct = origin, et l'objet d'instance fils a également un attribut constructeur, pointant vers la fonction qui a créé cet objetfunction origin() { } const son = new origin() console.log(origin.prototype.constructor === origin) // true console.log(son.constructor === origin) // true
__proto__ est en fait une fonction prise en charge par la plupart des navigateurs Pour accéder à une propriété de la chaîne de prototypes interne
Lors de l'appel de son.__proto__ appelle en fait son.__proto__(), la valeur de retour est la même que le résultat de Object.getPrototypeOf(origin)son.__proto__ === origin.prototype // true
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!