Es gibt viele Möglichkeiten, Klassen in JS zu definieren:
1. Fabrikmethode
Die Codekopie lautet wie folgt:
Funktion Car () {
var ocar = neues Objekt;
ocar.color = "blau";
ocar.doors = 4;
ocar.showcolor = function () {
document.write (this.color)
};
Return OCAR;
}
var car1 = car ();
var car2 = car ();
Wenn diese Funktion aufgerufen wird, wird ein neues Objekt erstellt und alle Eigenschaften und Methoden zugewiesen. Verwenden Sie diese Funktion, um 2 Objekte mit genau den gleichen Eigenschaften zu erstellen. Natürlich kann meine Schwester diese Methode ändern, indem sie Parameter übergeben.
Die Codekopie lautet wie folgt:
Funktion Car (Farbe, Tür) {
var ocar = neues Objekt;
ocar.color = color;
ocar.doors = Tür;
ocar.showcolor = function () {
document.write (this.color)
};
Return OCAR;
}
var car1 = car ("rot", 4);
var car2 = car ("blau", 4);
car1.showcolor () // Ausgabe: "Rot"
car2.showcolor () // Ausgabe: "Blau"
Jetzt können Sie Objekte mit unterschiedlichen Werten erhalten, indem Sie unterschiedliche Parameter an die Funktion übergeben.
Im vorherigen Beispiel wird jedes Mal, wenn das Funktion car () aufgerufen wird, Showcolor () erstellt, was bedeutet, dass jedes Objekt eine eigene Showcolor () -Methode hat.
Tatsächlich teilt jedes Objekt dieselbe Funktion.
Obwohl eine Methode außerhalb der Funktion definiert werden kann, dann durch Hinweis auf die Eigenschaften der Funktion auf die Methode.
Die Codekopie lautet wie folgt:
Funktion showcolor () {
alarm (this.color);
}
Funktion Car () {
var ocar = new Object ();
ocar.color = color;
ocar.doors = Tür;
ocar.showcolor = showcolor;
Return OCAR;
}
Dies sieht jedoch nicht wie eine Funktionsmethode aus.
2. Konstruktormethode
Die Konstruktormethode ist so einfach wie die Fabrikmethode, wie unten gezeigt:
Die Codekopie lautet wie folgt:
Funktion Car (Farbe, Tür) {
this.color = color;
this.doors = to;
this.showcolor = function () {
alarm (this.color)
};
}
var car1 = neues Auto ("rot", 4);
var car2 = neues Auto ("blau", 4);
Sie können sehen, dass die Konstruktormethode keine Objekte in der Funktion erstellt und das von diesem verwendete Schlüsselwort. Da beim Aufrufen des Konstruktors ein Objekt erstellt wurde und dies nur zum Zugriff auf die Objekteigenschaften innerhalb der Funktion verwendet werden kann.
Verwenden Sie jetzt, um Objekte zu erstellen, und sieht so aus! Aber es ist dasselbe wie die Fabrik. Jeder Anruf erstellt eine eigene Methode für das Objekt.
3. Prototypmethode
Diese Methode nutzt das Prototypattribut des Objekts. Erstellen Sie zunächst den Klassennamen mit einer leeren Funktion, und dann werden alle Attribute und Methoden dem Prototyp -Attribut zugeordnet.
Die Codekopie lautet wie folgt:
Funktion Car () {
}
Car.prototype.color = "rot";
Car.Prototype.doors = 4;
Car.prototype.showcolor = function () {
alarm (this.color);
}
var car1 = new Car ();
var car2 = new Car ();
In diesem Code wird zuerst eine leere Funktion definiert, und dann werden die Eigenschaften des Objekts durch das Prototyp -Attribut definiert. Wenn diese Funktion aufgerufen wird, werden alle Eigenschaften des Prototyps dem zu erstellenden Objekt zugewiesen. Alle Objekte in dieser Funktion speichern Zeiger auf ShowColor (), die syntaktisch zu demselben Objekt zu gehören scheinen.
Diese Funktion hat jedoch keine Parameter, und das Attribut kann nicht durch Übergabe von Parametern initialisiert werden. Der Standardwert des Attributs muss geändert werden, nachdem das Objekt erstellt wurde.
Ein sehr ernstes Problem mit der Prototypmethode ist, dass das Attribut auf ein Objekt wie ein Array zeigt.
Die Codekopie lautet wie folgt:
Funktion Car () {
}
Car.prototype.color = "rot";
Car.Prototype.doors = 4;
Car.prototype.arr = new Array ("a", "b");
Car.prototype.showcolor = function () {
alarm (this.color);
}
var car1 = new Car ();
var car2 = new Car ();
car1.arr.push ("cc");
Alert (CAR1.arr); // Ausgabe: AA, BB, CC
Alarm (Car2.arr); // Ausgabe: AA, BB, CC
Aufgrund des Referenzwerts des Arrays weisen beide Autoobjekte auf dasselbe Array hin. Wenn der Wert in CAR1 hinzugefügt wird, können Sie ihn auch in CAR2 sehen.
Union ist eine Methode, mit der Objekte wie andere Programmiersprachen mit Konstruktor/Prototyp erzeugt werden können. Es ist eine Methode, die Konstruktoren zum Definieren nicht funktionierender Eigenschaften von Objekten verwendet und Prototypen zum Definieren von Objekten verwendet.
Die Codekopie lautet wie folgt:
Funktion Car (Farbe, Tür) {
this.color = color;
this.doors = to;
this.arr = new Array ("aa", "bb");
}
Car.prototype.showcolor () {
alarm (this.color);
}
var car1 = neues Auto ("rot", 4);
var car2 = neues Auto ("blau", 4);
car1.arr.push ("cc");
Alert (CAR1.arr); // Ausgabe: AA, BB, CC
Alarm (Car2.arr); // Ausgabe: aa, bb
5. Dynamische Prototypmethode
Die dynamische Prototypmethode ähnelt der gemischten Konstruktor-/Prototypmethode. Der einzige Unterschied ist die Position der Methode des Objekts.
Die Codekopie lautet wie folgt:
Funktion Car (Farbe, Tür) {
this.color = color;
this.doors = to;
this.arr = new Array ("aa", "bb");
if (typeof car._initialized == "undefined") {
Car.prototype.showcolor = function () {
alarm (this.color);
};
Car._initialized = true;
}
}
Die dynamische Prototypmethode besteht darin, ein Flag zu verwenden, um festzustellen, ob dem Prototyp eine Methode zugewiesen wurde. Dies stellt sicher, dass die Methode nur einmal erstellt wird
6. gemischte Fabrikmethode
Sein Zwecklehrer erstellt einen gefälschten Konstruktor, der nur neue Instanzen eines anderen Objekts zurückgibt.
Die Codekopie lautet wie folgt:
Funktion Car () {
var ocar = new Object ();
ocar.color = "rot";
ocar.doors = 4;
ocar.showcolor = function () {
alarm (this.color)
};
Return OCAR;
}
Im Gegensatz zur Fabrikmethode verwendet diese Methode den neuen Bediener.
Die oben genannten sind alle Methoden zum Erstellen von Objekten. Die am weitesten verbreitete Methode ist die Hybridkonstruktor-/Prototypmethode, und die dynamische Prototypmethode ist ebenfalls sehr beliebt. Funktionell äquivalent zur Konstruktor-/Prototypmethode.
Das obige dreht sich alles um diesen Artikel, ich hoffe es gefällt euch.