Maison > interface Web > js tutoriel > Une brève introduction aux prototypes et aux chaînes de prototypes en javascript

Une brève introduction aux prototypes et aux chaînes de prototypes en javascript

不言
Libérer: 2018-10-20 16:49:05
avant
1804 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion
L'attribut prototype de la fonction origin est en fait équivalent à un objet. Cet objet pointe vers les objets prototypes des instances son1 et son2. Par conséquent, lorsque l'attribut name est appelé, il sera le long du prototype. La chaîne continue de rechercher et la valeur de origin.prototype.name est affichée. L'objet prototype de la fonction pointera vers le prototype de l'instance. D'un autre point de vue, on peut aussi dire que son1 et son2 héritent de l'objet prototype de la fonction 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 objet
function origin() {

}
const son = new origin()
console.log(origin.prototype.constructor === origin) // true
console.log(son.constructor === origin) // true
Copier après la connexion

_proto_

__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
Copier après la connexion

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!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal