Maison  >  Article  >  interface Web  >  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

不言
不言avant
2018-10-20 16:49:051736parcourir

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
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

_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

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer