Maison >interface Web >js tutoriel >Une analyse approfondie du constructeur en JavaScript

Une analyse approfondie du constructeur en JavaScript

PHPz
PHPzoriginal
2016-05-16 15:04:551821parcourir

La propriété constructeur renvoie une référence à la fonction de tableau qui a créé cet objet. Cet article vous présentera le constructeur en JavaScript. Les amis qui en ont besoin peuvent s'y référer.

Définition et utilisation

La propriété constructeur renvoie une référence à la fonction de tableau qui a créé cet objet.

Syntaxe

object.constructor

constructeur, constructeur, nous connaissons tous ce nom, le constructeur est toujours Pointeur au constructeur qui a créé l'objet actuel.

Une chose à noter ici est que chaque fonction a un attribut de prototype, et le constructeur de ce prototype pointe vers cette fonction. À ce moment-là, lorsque nous avons modifié le prototype de cette fonction, un accident s'est produit. . Tel que

function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype.getAge = function(){
return this.age;
}
Person.prototype.getName = function(){
return this.name;
}
var p = new Person("Nicholas",18);
console.log(p.constructor); //Person(name, age)
console.log(p.getAge()); //18
console.log(p.getName()); //Nicholas

Mais si c'est comme ça :

function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype = {
getName:function(){
return this.name;
},
getAge:function(){
return this.age;
}
}
var p = new Person("Nicholas",18);
console.log(p.constructor); //Object()
console.log(p.getAge()); //18
console.log(p.getName()); //Nicholas

Du coup, le constructeur a changé .

La raison est que le prototype lui-même est également un objet. Le code ci-dessus est équivalent à

Person.prototype = new Object({
getName:function(){
return this.name;
},
getAge:function(){
return this.age;
}
});

car le constructeur pointe toujours vers. le constructeur qui crée l'objet actuel, alors il n'est pas difficile de comprendre que la sortie de p.constructor dans le code ci-dessus est Object.

Que dois-je faire si le constructeur, après avoir modifié le prototype, souhaite toujours qu'il pointe vers Person ? Simple, attribuez simplement une valeur à Person.prototype.constructor directement :

Person.prototype = {
constructor:Person,
getName:function(){
return this.name;
},
getAge:function(){
return this.age;
}
}

Ce qui précède est le constructeur en JavaScript introduit par l'éditeur. Pour plus de didacticiels connexes, veuillez visiter . Tutoriel vidéo JavaScript !

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

Articles Liés

Voir plus