1. Konstruktor
Der Wert des Konstruktors ist eine Funktion. In JavaScript haben Werte, Arrays, Funktionen und Objekte von Typen mit Ausnahme von Null und Undefined ein Konstruktorattribut. wie:
Kopieren Sie den Code wie folgt: var a = 12, // Nummer
B = 'str', // String
c = falsch, // boolean
d = [1, 'd', function () {return 5;
e = {name: 'e'}, // Objekt
f = function () {return 'function';
console.log ('a:', a.constructor);
console.log ('b:', b.Constructor);
console.log ('C:', C.Constructor);
console.log ('D:', D.Constructor);
console.log ('e:', e.constructor);
console.log ('f:', f.constructor);
Die obigen Konstruktoren sind in JavaScript integriert, und wir können auch Konstruktoren anpassen, wie z. B.:
Die Codekopie lautet wie folgt:
Funktion a (Name) {
this.name = name;
}
var a = new a ('a');
Konsole.log (A.Constructor);
Wenn Sie den Konstruktor aufrufen, müssen Sie das neue Keyword verwenden.
Die Codekopie lautet wie folgt: var a = 4;
var b = neue Zahl (4);
console.log ('a:', typeof a);
console.log ('b:', typeof b);
2. Prototyp
Prototyp ist eine Eigenschaft einer Funktion. wie:
Kopieren Sie den Code wie folgt: Funktion fn () {}
console.log (fn.prototype);
Das Prototyp -Attribut wird hauptsächlich zur Implementierung der Vererbung in JavaScript verwendet, z. B.:
Kopieren Sie den Code wie folgt: Funktion A (Name) {
this.name = name;
}
A.Prototype.show = function () {
console.log (this.name);
};
Funktion B (Name) {
this.name = name;
}
B.Prototype = A.Prototyp;
var test = neu B ('Test');
test.show ();
Hier gibt es ein Problem.
Kopieren Sie den Code wie folgt: console.log (Test.Constructor);
Dies liegt daran, dass b.Prototypen = A.Prototype den Konstruktor von B.Prototypen in a geändert hat. Sie müssen daher den Konstruktor des B.Prototyps wiederherstellen:
Kopieren Sie den Code wie folgt: Funktion A (Name) {
this.name = name;
}
A.Prototype.show = function () {
console.log (this.name);
};
Funktion B (Name) {
this.name = name;
}
B.Prototype = A.Prototyp;
B.Prototype.Constructor = B;
var test = neu B ('Test');
test.show ();
console.log (test.constructor);
Der Grund dafür ist, dass der Wert des Prototyps ein Objekt ist und seine Konstruktorfunktion die Funktion ist, in der er sich befindet, dh:
Kopieren Sie den Code wie folgt: console.log (A.Prototype.Constructor === a);