1. Constructeur
La valeur du constructeur est une fonction. En JavaScript, les valeurs, les tableaux, les fonctions et les objets de types autres que null et non définis ont un attribut constructeur. La valeur de l'attribut constructeur est le constructeur de la valeur, du tableau, de la fonction ou de l'objet. Par exemple :
var a = 12, // Numéro
b = 'str', // String
c = false, // Valeur booléenne
d = [1, 'd', function() { return 5 }], // Array
e = { nom : 'e' }, // Objet
f = function() { return 'function' }; // Function
console.log('a: ', a.constructor ); / / Number()
console.log('b: ', b.constructor); // String()
console.log('c: ', c.constructor); )
console.log('d: ', d.constructor); // Array()
console.log('e: ', e.constructor); // Object()
console. log('f:', f.constructor); // Fonction()
Les constructeurs ci-dessus sont tous intégrés en JavaScript. Nous pouvons également personnaliser les constructeurs, tels que :
function A(name) {
this.name = name;
}
var a = new A('a');
console.log(a.constructor); // A(nom)
Lors de l'appel du constructeur, vous devez utiliser le mot-clé new. Le constructeur renvoie un objet. Vous pouvez le voir en regardant le code suivant :
var a = 4;
var b = new Number(4);
console.log('a : ', typeof a) ; // a: number
console.log('b: ', typeof b); // b: object
2. prototype
Le prototype est un attribut d'une fonction. Par défaut, la valeur de l'attribut prototype d'une fonction est un objet vide portant le même nom que la fonction. Objet. Par exemple :
fonction fn() {}
console .log(fn.prototype); // fn { }
L'attribut
prototype est principalement utilisé pour implémenter l'héritage en JavaScript, tel que :
fonction A(nom) {
this.name = nom;
}
A.prototype.show = function() {
console.log(this. nom);
};
fonction B(nom) {
this.name = nom;
}
B.prototype = A.prototype;
var test = new B('test');
test.show(); // test
Il y a un problème ici. Le constructeur de test est en fait la fonction A au lieu de la fonction B :
console.log(test.constructor); // A(name)
C'est parce que B.prototype = A.prototype change le constructeur de B. prototype en A, donc le constructeur de B.prototype doit être restauré :
fonction A( nom) {
this.name = nom;
}
A.prototype.show = function() {
console.log(this.name) ;
};
fonction B(nom) {
this.name = nom;
}
B.prototype = A.prototype;
B. prototype.constructor = B;
var test = new B('test');
test.show(); // test
console.log(test.constructor); // B(nom)
La raison pour laquelle nous faisons cela est parce que la valeur du prototype est un objet, et son constructeur, c'est-à-dire la valeur de son attribut constructeur est la fonction dans laquelle il se trouve, c'est-à-dire :
console.log(A.prototype.constructor === A); >