Eine JavaScript-Klasse ist eine Blaupause zum Erstellen von Objekten. Eine Klasse kapselt Daten und Funktionen, die die Daten bearbeiten.
Im Gegensatz zu anderen Programmiersprachen wie Java und C++ sind JavaScript-Klassen syntaktischer Zucker über die prototypische Vererbung. Mit anderen Worten, ES6-Klassen sind nur spezielle Funktionen.
Klassen vor ES6 revisited
Vor ES6 hatte JavaScript keine Konzepte von Klassen., Um eine Klasse nachzuahmen, haben wir häufig eine Konstruktorfunktion verwendet, wie im folgenden Beispiel gezeigt:
Ausgabe:
Wie es funktioniert.
Erstellen Sie zunächst die Person
als Konstruktorfunktion mit einem Eigenschaftsnamen namens name
. DiegetName()
– Funktion ist der zugeordnet, sodass sie von allen Instanzen des TypsPerson
gemeinsam genutzt werden kann.
Erstellen Sie dann eine neue Instanz des Typs Person
mit dem Operator new
., Dasjohn
– Objekt ist daher eine Instanz der Person
und Object
durch prototypische Vererbung.,
Die folgenden Anweisungen verwenden den Operator instanceof
, um zu überprüfen, ob john
eine Instanz der Person
und Object
Typ:
Code language: JavaScript (javascript)
ES6 Klassendeklaration
Code language: JavaScript (javascript)
Diese Person
Klasse verhält sich wie die Person
im vorherigen Beispiel. Anstelle einer Konstruktorfunktion wird jedoch das Schlüsselwort class
.,
In der Person
– Klasse können Sie mit der die Eigenschaften einer Instanz initialisieren. JavaScript ruft automatisch dieconstructor()
– Methode auf, wenn Sie ein Objekt der Klasse instanziieren.
Im Folgenden wird ein neues Person
– Objekt erstellt, das automatisch die constructor()
der Person
– Klasse aufruft:
Code language: JavaScript (javascript)
Die getName()
wird als Methode des Person
Klasse., Wie eine Konstruktorfunktion können Sie die Methoden einer Klasse mit der folgenden Syntax aufrufen:
Code language: CSS (css)
Zum Beispiel:
Code language: JavaScript (javascript)
Um die Tatsache zu überprüfen, dass Klassen spezielle Funktionen sind, können Sie den Operator typeof
verwenden, um den Typ der Person
div > Klasse.
Code language: JavaScript (javascript)
Es gibt function
wie erwartet.,
Das john
– Objekt ist auch eine Instanz des Person
und Object
Typen:
Code language: JavaScript (javascript)
Class vs. Custom type
Trotz der Ähnlichkeiten zwischen einer Klasse und einem benutzerdefinierten Typ, der über eine Konstruktorfunktion definiert ist, gibt es einige wichtige Unterschiede.
Erstens werden Klassendeklarationen nicht wie Funktionsdeklarationen gehisst.
Wenn Sie beispielsweise den folgenden Code über dem Abschnitt Person
Klassendeklaration platzieren, erhalten Sie eine ReferenceError
.,
Code language: JavaScript (javascript)
Fehler:
Code language: JavaScript (javascript)
Zweitens wird der gesamte Code innerhalb einer Klasse automatisch im strengen Modus ausgeführt. Und Sie können dieses Verhalten nicht ändern.
Drittens sind Klassenmethoden nicht aufzählbar. Wenn Sie eine Konstruktorfunktion verwenden, müssen Sie die Object.defineProperty()
-Methode verwenden, um eine Eigenschaft nicht aufzählbar zu machen.
Viertens führt der Aufruf des Klassenkonstruktors ohne den Operator new
zu einem Fehler, wie im folgenden Beispiel gezeigt.,
Code language: JavaScript (javascript)
Fehler:
Code language: JavaScript (javascript)
Zusammenfassung
- Verwenden Sie JavaScript
class
Schlüsselwort deklariert eine neue Klasse. - A
class
Deklaration ist syntaktischer Zucker über prototypische Vererbung mit zusätzlichen Verbesserungen.
- War dieses tutorial hilfreich ?
- YesNo
Leave a Reply