1. Konstruktor
Der Wert des Konstruktors ist eine Funktion. In JavaScript haben Werte, Arrays, Funktionen und Objekte anderer Typen als null und undefiniert ein Konstruktorattribut. Der Wert des Konstruktorattributs ist der Konstruktor des Werts, Arrays, der Funktion oder des Objekts. Zum Beispiel:
var a = 12, // Number
b = 'str', // String
c = false, // Boolescher Wert
d = [1, 'd', function() { return 5; }], // Array
e = { name: 'e' }, // Object
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); // Function()
Die oben genannten Konstruktoren sind alle in JavaScript integriert. Wir können die Konstruktoren auch anpassen, wie zum Beispiel:
function A(name) {
this.name = name;
}
var a = new A('a');
console.log(a.constructor); // A(name)
Wenn Sie den Konstruktor aufrufen, müssen Sie das Schlüsselwort new verwenden. Sie können es sehen, indem Sie sich den folgenden Code ansehen:
var a = 4;
var b = new Number(4);
console.log('a : ', typeof a) ; // a: number
console.log('b: ', typeof b); // b: object
2. Prototyp
Prototyp ist ein Attribut einer Funktion. Standardmäßig ist der Wert des Prototypattributs einer Funktion ein leeres Objekt mit demselben Namen wie das Prototypattribut einer anonymen Funktion Objekt. Zum Beispiel:
Funktion fn() {}
console .log(fn.prototype); // fn { }
Das
Prototype-Attribut wird hauptsächlich zum Implementieren der Vererbung in JavaScript verwendet, z. B.:
function A(name) {
this.name = name;
}
A.prototype.show = function() {
console.log(this. name);
};
function B(name) {
this.name = name;
}
B.prototype = A.prototype;
var test = new B('test');
test.show(); // test
Hier liegt ein Problem vor. Der Konstruktor des Tests ist eigentlich Funktion A und nicht Funktion B:
console.log(test.constructor); // A(name)
Das liegt daran, dass B.prototype = A.prototype den Konstruktor von B ändert. Prototyp zu A, daher muss der Konstruktor von B.prototype wiederhergestellt werden:
function A( name) {
this.name = name;
}
A.prototype.show = function() {
console.log(this.name) ;
};
Funktion B(name) {
this.name = name;
}
B.prototype = A.prototype;
B. Prototyp.constructor = B;
var test = new B('test');
test.show(); // test
console.log(test.constructor); // B(Name)
Der Grund, warum wir dies tun, liegt darin, dass der Wert des Prototyps ein Objekt ist und sein Konstruktor, d. h. der Wert seines Konstruktorattributs, die Funktion ist, in der es sich befindet, d >