Maison  >  Article  >  interface Web  >  Un résumé concis du prototype et du constructeur dans les connaissances JavaScript_Basic

Un résumé concis du prototype et du constructeur dans les connaissances JavaScript_Basic

WBOY
WBOYoriginal
2016-05-16 16:53:201188parcourir

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 :

Copier le code Le code est le suivant :
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 :

Copier le code Code comme suit :

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 :

Copier le code. Le code est le 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 :

Copier le code Le code est le suivant :
fonction fn() {}

console .log(fn.prototype); // fn { }
L'attribut

prototype est principalement utilisé pour implémenter l'héritage en JavaScript, tel que :

Copier le code Le code est le suivant :
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 :

Copier le code Le code est la suivante :
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é :
Copier le code Le code est le suivant :
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 :

Copier le code Le code est le suivant :
console.log(A.prototype.constructor === A); >

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