Es gibt ein berühmtes Prinzip für die Wiederverwendung von Code, das von GoF vorgeschlagen wurde: Geben Sie der Objektzusammensetzung Vorrang vor der Klassenvererbung. In JavaScript gibt es kein Klassenkonzept, sodass die Wiederverwendung von Code nicht auf die Klassenvererbung beschränkt ist. Es gibt viele Möglichkeiten, Objekte in JavaScript zu erstellen. Es gibt Konstruktoren, mit denen Sie Objekte erstellen und dynamisch ändern können. Die Nicht-Klassen-Vererbung von JavaScript (die als modernes Vererbungsmodell bezeichnet werden kann) verfügt auch über viele Wiederverwendungsmethoden, z. B. die Verwendung anderer Objekte zum Kombinieren zu den erforderlichen Objekten, die Objektmischtechnologie sowie das Ausleihen und Wiederverwenden der erforderlichen Methoden.
Klassenvererbungsmodus – Standardmodus
Beispiele für zwei Konstruktoren Parent und Child:
Das Folgende ist eine Implementierungsmethode der wiederverwendbaren Vererbungsfunktion inherit():
Das Prototyp-Attribut sollte hier auf ein Objekt und nicht auf eine Funktion verweisen. Daher muss es auf eine vom übergeordneten Konstruktor erstellte Instanz verweisen, nicht auf den Konstruktor selbst.
Danach werden bei der Erstellung des Child-Objekts seine Funktionen von der Parent-Instanz über den Prototyp abgerufen:
Die Prototypenkette nach dem Aufruf der Vererbung:
Weitere Attribute des Kindes hinzufügen:
Änderungen in der Prototypenkette:
Sie können den Namen in den Eigenschaften Ihres eigenen Objekts finden, sodass Sie nicht in der Prototypenkette nachschlagen müssen.
Einer der Nachteile der Verwendung des obigen Musters besteht darin, dass die Attribute zweier Objekte gleichzeitig geerbt werden, nämlich die diesem hinzugefügten Attribute und die Prototypattribute. In den meisten Fällen sind diese Eigenschaften nicht erforderlich.
Ein weiterer Nachteil besteht darin, dass die Verwendung der inherit()-Vererbung die Übergabe von Parametern an Unterkonstruktoren nicht unterstützt, zum Beispiel:
Dieses Ergebnis ist nicht zu erwarten. Obwohl der untergeordnete Konstruktor Parameter an den übergeordneten Konstruktor übergeben kann, muss dieser Vererbungsmechanismus jedes Mal erneut ausgeführt werden, wenn ein untergeordnetes Objekt benötigt wird, und ist ineffizient, da am Ende das übergeordnete Objekt vorhanden ist neu erstellt.
Dieser Artikel endet hier. Wir werden die anderen Modi des JavaScript-Code-Wiederverwendungsmodus in Zukunft weiter aktualisieren.