JavaScript-Klassenvererbung
Die JavaScript-Klassenvererbung verwendet das Schlüsselwort extends.
Vererbung ermöglicht es uns, eine Klasse auf Basis einer anderen Klasse zu definieren, wodurch das Erstellen und Pflegen einer Anwendung erleichtert wird.
super()Die Methode wird verwendet, um den Konstruktor der Elternklasse aufzurufen.
Wenn Sie eine Klasse erstellen, müssen Sie neue Datenmember und Memberfunktionen nicht erneut schreiben; Sie müssen nur angeben, dass die neue Klasse die Member einer vorhandenen Klasse erbt. Diese vorhandene Klasse wird alsBasisklasse (Elternklasse)bezeichnet, und die neue Klasse wird alsabgeleitete Klasse (Kindklasse)。
Vererbung stellt eineIst-ein-Beziehung dar. Zum Beispiel ist ein Säugetier ein Tier, ein Hund ist ein Säugetier, daher ist ein Hund ein Tier, und so weiter.

Der Code lautet wie folgt:
Das folgende Beispiel erstellt eine Klasse "Example", die von der Klasse "Site" erbt:
Beispiel
Selbst ausprobieren »
super()Die Methode ruft den Konstruktor der Elternklasse auf.
Durch Aufrufen einer Methode im Konstruktor,super()rufen wir den Konstruktor der Elternklasse auf, wodurch wir Zugriff auf die Eigenschaften und Methoden der Elternklasse erhalten.
Vererbung ist nützlich für die Wiederverwendbarkeit von Code.
JavaScript hat keine traditionellen Klassen wie andere Programmiersprachen; es basiert auf einem prototypischen Vererbungsmodell.
ES6 führte die Klasse und dasclass-Schlüsselwort ein, aber der zugrunde liegende Mechanismus basiert weiterhin auf prototypischer Vererbung.
Verwendung der Prototypenketten-Vererbung
Im folgenden Beispiel ist Animal eine Basisklasse und Dog eine Unterklasse, die von Animal erbt. Dog.prototype verwendet Object.create(Animal.prototype), um ein neues Objekt zu erstellen, das die Methoden und Eigenschaften von Animal.prototype erbt. Indem Dog.prototype.constructor auf Dog gesetzt wird, wird sichergestellt, dass der Konstruktor in der Vererbungskette korrekt ist.
Beispiel
Verwendung der ES6-Klassenvererbung
ES6 führte das Schlüsselwort class ein, wodurch Klassendefinition und Vererbung klarer wurden. Das Schlüsselwort extends wird verwendet, um eine Vererbungsbeziehung herzustellen, und das Schlüsselwort super wird verwendet, um im Konstruktor der Unterklasse den Konstruktor der Elternklasse aufzurufen.
Beispiel
Ob Sie die Vererbung über die Prototypenkette oder die ES6-Klassenvererbung verwenden, lassen sich ähnliche Vererbungseffekte erzielen. Bei der Wahl einer Methode können Sie sich nach persönlichen Vorlieben und Projektanforderungen entscheiden.
Getter und Setter
In Klassen können wir Getter und Setter verwenden, um Werte abzurufen und zu setzen. Getter und Setter müssen im Strict-Modus ausgeführt werden.
Getter und Setter machen Operationen auf Eigenschaften sehr flexibel.
Um Getter und Setter in einer Klasse hinzuzufügen, verwende die Schlüsselwörter get und set.
Das folgende Beispiel erstellt einen Getter und einen Setter für die Eigenschaft sitename:
Beispiel
Selbst ausprobieren »
Hinweis:Obwohl ein Getter eine Methode ist, verwende keine Klammern, wenn du den Wert der Eigenschaft abrufen möchtest.
Die Namen von Getter-/Setter-Methoden dürfen nicht mit dem Eigenschaftsnamen übereinstimmen; in diesem Beispiel heißt die Eigenschaft sitename.
Viele Entwickler verwenden einen Unterstrich vor dem Eigenschaftsnamen_, um den Getter/Setter von der eigentlichen Eigenschaft zu trennen:
Das folgende Beispiel verwendet einen Unterstrich_, um die Eigenschaft festzulegen, und erstellt die entsprechenden Getter-/Setter-Methoden:
Beispiel
Selbst ausprobieren »
Um einen Setter zu verwenden, verwenden Sie dieselbe Syntax wie beim Festlegen eines Eigenschaftswerts. Obwohl set eine Methode ist, sollte es ohneKlammern stehen:
Beispiel
Selbst ausprobieren »
Hoisting
Ein wichtiger Unterschied zwischen Funktionsdeklarationen und Klassendeklarationen besteht darin, dass Funktionsdeklarationen gehoistet werden, Klassendeklarationen jedoch nicht.
Sie müssen Ihre Klasse zuerst deklarieren und dann darauf zugreifen; andernfalls löst Code wie der folgende einen ReferenceError aus:
Beispiel
Die Verwendung ohne Deklaration verursacht einen Fehler:

Wenn es vor der Verwendung deklariert wird, wird es normal ausgeführt:
