Dieser Artikel beschreibt die Implementierungsmethoden von Klassen und Instanzen in JavaScript. Teilen Sie es für Ihre Referenz. Die Details sind wie folgt:
In JavaScript gibt es kein Konzept aus der Elternklasse, der Unterricht oder der Klasse oder einer Instanz. Es hängt alles von der Prototypkette ab, um die Vererbung zu erreichen. Bei der Suche nach den Eigenschaften eines Objekts durchquert JavaScript die Prototypkette nach oben, bis die entsprechenden Eigenschaften gefunden werden. Es gibt verschiedene Methoden, mit denen JavaScript die Konzepte von Klasse und Instanz simulieren kann.
1. Verwenden Sie den Konstruktor direkt, um ein Objekt zu erstellen, und beziehen Sie sich auf die Objektinstanz im Konstruktor.
Kopieren Sie den Code wie folgt: Funktion Animal () {
this.name = "Animal";
}
Animal.Prototype.Makesound = function () {
console.log ("Animal Sound");
}
[Funktion]
var Animal1 = new Animal ();
Animal1.Name;
'Tier'
Animal1.Makesound ();
Tierklang
Schauen wir uns ein anderes Beispiel an:
Kopieren Sie den Code wie folgt: Funktionspunkt (x, y) {
this.x = x;
this.y = y;
}
Point.prototype = {
method1: function () {console.log ("method1"); },
method2: function () {console.log ("method2"); },
}
{Method1: [Funktion], Method2: [Funktion]}
var point1 = neuer Punkt (10, 20);
point1.method1 ();
Methode1
point1.method2 ();
Methode2
Geben Sie wie oben zunächst das Prototyp -Attribut eines Konstruktorobjekts an. Anschließend können Sie die im Prototyp angegebene Methode aufrufen.
2. Verwenden Sie die Methode von Object.create (), um ein Objekt zu erstellen
Kopieren Sie den Code wie folgt: var Animal = {
Name: "Tier",
macht: function () {console.log ("Animal Sound"); },
}
var Animal2 = Object.create (Animal);
Animal2.Name;
'Tier'
console.log (Animal2.Name);
Tier
Animal2.Makesound ();
Tierklang
Diese Methode ist einfacher als die Konstruktormethode, kann jedoch nicht private Attribute und private Methoden implementieren, und Daten können nicht zwischen Instanzobjekten geteilt werden, sodass die Simulation der Klasse immer noch nicht umfassend genug ist.
3.. Minimalistischer Ansatz, der vom niederländischen Programmierer Gabor de Mooij vorgeschlagen wurde. Empfohlene Nutzung.
Kopieren Sie den Code wie folgt: var Animal = {
init: function () {
var Animal = {};
Animal.Name = "Animal";
Animal.Makesound = function () {console.log ("Animal Sound"); };
Tiertier;
}
};
var Animal3 = Animal.init ();
Animal3.Name;
'Tier'
Animal3.Makesound ();
Tierklang
Ohne und dies zu verwenden, müssen Sie nur einen Konstruktor init anpassen. Die ererbte Implementierung ist ebenfalls sehr einfach.
Kopieren Sie den Code wie folgt: var cat = {
init: function () {
var cat = Animal.init ();
cat.name2 = "cat";
Cat.Makesound = function () {console.log ("Cat Sound"); };
cat.sleep = function () {console.log ("Katzenschlaf"); };
Katze zurückkehren;
}
}
var cat = cat.init ();
Katzenname; // 'Tier'
Cat.Name2; // 'Katze'
Cat.Makesound (); // Ähnlich wie bei Methodenüberlastung
Katzenklang
cat.sleep ();
Katzenschlaf
Verwendung von privaten Eigenschaften und privaten Methoden:
Kopieren Sie den Code wie folgt: var Animal = {
init: function () {
var Animal = {};
var Sound = "Privat Animal Sound"; // Private Attribute
Animal.Makesound = function () {console.log (Sound); };
Tiertier;
}
};
var Animal4 = Animal.init ();
Tier.Sound; // undefinierte private Attribute können nur durch die eigenen Methoden des Objekts gelesen werden.
tier.Sound; // undefinierte private Attribute können nur durch die eigene Methode des Objekts gelesen werden.
Animal4.Makesound ();
privates Tierklang
Solange Eigenschaften und Methoden, die nicht auf Tierobjekten definiert sind, privat sind, können sie nicht von der Außenwelt zugreifen.
Der Datenaustausch kann zwischen Klassen und Instanzen erreicht werden.
Kopieren Sie den Code wie folgt: var Animal = {
Klang: "Common Animal Sound",
init: function () {
var Animal = {};
Animal.CommonSound = function () {console.log (Animal.Sound); };
Animal. };
Tiertier;
}
}
var Animal5 = Animal.init ();
var Animal6 = Animal.init ();
Tier.Sound; // kann als Klassenattribut angesehen werden
"Gemeinsamer Tiergeräusch"
Animal5.Sound; // Instanzobjekt kann nicht auf Klassenattribute zugreifen
undefiniert
Animal6.Sound;
undefiniert
Animal5.Commonsound ();
Gemeinsamer Tiergeräusch
Animal6.Commonsound ();
Gemeinsamer Tiergeräusch
Animal5.Changesound (); // Klasseneigenschaften ändern
undefiniert
Tier.Sound;
"Gemeinsamer Tiergeräusch"
Animal5.Commonsound ();
Gemeinsamer Tiergeräusch
Animal6.Commonsound ();
Gemeinsamer Tiergeräusch
Zum Beispiel sind Animal.Sound die gemeinsam genutzten Attribute von Klassen und Instanzen, die als Klassenattribute und Klassenmethoden angesehen werden können.
Wenn eine Instanz das gemeinsame Attribut ändert, werden auch die gemeinsamen Attribute der Klasse und anderer Instanzen entsprechend geändert.
Zusammenfassend ist es das Konzept und die Verwendung von Klassen und Instanz, die in JavaScript simuliert sind.
Ich hoffe, dieser Artikel wird für JavaScript -Programme aller hilfreich sein.