In JavaScript ist die Vererbung eines der Grundprinzipien, die zum Organisieren und Strukturieren von Code verwendet werden. Es ermöglicht Ihnen, Objekte zu erstellen, die Eigenschaften und Methoden von anderen Objekten erben. Die Vererbung reduziert die Menge an Code und die Wiederverwendung von Funktionen, was sie zu einem unverzichtbaren Bestandteil der Entwicklung in dieser Sprache macht.
In JavaScript wird die Vererbung mithilfe von Prototypen implementiert. Jedes Objekt in dieser Sprache hat einen Prototyp, der seine Eigenschaften und Methoden definiert. Wenn Sie ein neues Objekt erstellen, erbt es Eigenschaften und Methoden von seinem Prototyp. Wenn eine Eigenschaft oder Methode in einem Objekt fehlt, sucht JavaScript in seinem Prototyp nach ihr und verwendet sie, wenn sie gefunden wird,. Dadurch können Sie Prototypketten erstellen, in denen ein Objekt Eigenschaften und Methoden von einem anderen Objekt erbt, das sie wiederum von einem anderen Objekt erben kann und so weiter.
Wenn die Methode eines Objekts aufgerufen wird, prüft JavaScript zuerst, ob das Objekt selbst eine solche Methode hat. Wenn es nicht vorhanden ist, sucht JavaScript weiterhin in seinem Prototyp und weiter in der Prototypkette, bis die gewünschte Funktion gefunden wird oder das Ende der Kette erreicht ist. Durch die Vererbung können Objekte daher die Eigenschaften und Methoden verwenden, die in ihren Prototypen definiert sind, und sie bei Bedarf hinzufügen oder überschreiben.
Grundlagen der Vererbung in JavaScript
Die Grundprinzipien der Vererbung in JavaScript basieren auf einem prototypischen Ansatz. Ein Prototyp ist ein Objekt, das als Grundlage für die Erstellung anderer Objekte dient. Wenn ein Objekt auf eine Eigenschaft oder Methode zugreift, die es nicht hat, sucht JavaScript automatisch im Prototyp dieses Objekts nach ihr. Wenn sich eine Eigenschaft oder Methode im Prototyp befindet, wird sie verwendet.
In JavaScript wird die Vererbung mit dem prototype-Konstrukt implementiert. Wenn ein neues Objekt erstellt wird, wird ihm automatisch ein Prototyp zugewiesen, bei dem es sich um ein Objekt handelt. Alle Eigenschaften und Methoden dieses Objekts stehen dem neuen Objekt zur Verfügung. Wenn ein Objekt Zugriff auf Eigenschaften oder Methoden benötigt, die es nicht hat, sucht JavaScript im Prototyp nach ihnen.
Die Vererbung in JavaScript kann auf zwei grundlegende Arten implementiert werden: über Konstruktoren und über Objekte. Bei der Vererbung über Konstruktoren wird die prototype-Eigenschaft verwendet. Bei der Vererbung über Objekte wird die Object-Methode verwendet.create() . Bei beiden Methoden können Sie eine Klassenhierarchie mit der Möglichkeit erstellen, Eigenschaften und Methoden zu vererben.
Die Vererbungsgrundsätze in JavaScript ermöglichen es Ihnen, eine flexible Klassenhierarchie zu erstellen, die das Erstellen und Verwenden von Objekten vereinfacht. Sie sind eine der Grundlagen von JavaScript und finden breite Anwendung bei der Entwicklung von Schnittstellen, Bibliotheken und Frameworks.
Wie erstelle ich eine Vererbung in JavaScript
In JavaScript wird die Vererbung mithilfe von Prototypen implementiert. Wenn wir ein neues Objekt erstellen, können wir seinen Prototyp angeben, der zum Suchen nach Eigenschaften und Methoden verwendet werden soll, es sei denn, sie befinden sich direkt im Objekt selbst.
Um eine Vererbung in JavaScript zu erstellen, können wir ein Schlüsselwort verwenden extends. Wenn wir eine neue Klasse deklarieren, die von einer anderen Klasse erbt, geben wir ein Schlüsselwort an extends nach dem Namen der neuen Klasse geben Sie dann den Namen der Klasse an, von der sie erbt.
Zum Beispiel, wenn wir eine Klasse haben Animal und wir wollen eine neue Klasse erstellen Cat, die Eigenschaften und Methoden von einer Klasse erbt Animal. wir können die folgende Syntax verwenden:
class Animaleat(food) is eating $.`);>>class Cat extends Animal meow() says meow!`);>>const myCat = new Cat('Whiskers', 7, 'Persian');myCat.eat('fish');myCat.meow();
In diesem Beispiel ist die Klasse Cat erbt Eigenschaften und Methoden von einer Klasse Animal. Wir können die Methode verwenden eat aus der Klasse Animal und die Methode meow aus der Klasse Cat bei einer Instanz einer Klasse Cat.
Mit diesem Ansatz können wir eine Klassenhierarchie erstellen und allgemeine Eigenschaften und Methoden erben, wodurch der Code modularer und einfacher zu verwenden ist.
Beispiele für die Verwendung von Vererbung in JavaScript
Ein Beispiel für die Verwendung von Vererbung in JavaScript ist das Erstellen von Unterklassen mit dem Schlüsselwort extends . Zum Beispiel haben wir eine Animal-Klasse und möchten Unterklassen von Dog und Cat erstellen. Wir können die Vererbung wie folgt definieren:
class Animal speak() >class Dog extends Animal >class Cat extends Animal >const dog = new Dog('Buddy');dog.speak(); // Выведет "Buddy barks."const cat = new Cat('Molly');cat.speak(); // Выведет "Molly meows."
In diesem Beispiel erben die Klassen Dog und Cat Eigenschaften und Methoden von der Klasse Animal . Jede der Unterklassen kann jedoch ihre eigene Implementierung der Speak- Methode definieren.
Ein weiteres Beispiel für die Verwendung von Vererbung in JavaScript ist das Hinzufügen neuer Methoden oder Eigenschaften zu einer vorhandenen Klasse. Zum Beispiel haben wir eine Person-Klasse und möchten ihr eine sayHello-Methode hinzufügen :
class Person sayHello() >// Добавляем новый метод в класс PersonPerson.prototype.sayGoodbye = function() const person = new Person('Alice');person.sayHello(); // Выведет "Hello, my name is Alice."person.sayGoodbye(); // Выведет "Goodbye!"
In diesem Beispiel erweitern wir die Person-Klasse, indem wir eine neue sayGoodbye-Methode mit einem Prototyp hinzufügen. Instanzen der Person-Klasse haben jetzt sowohl die sayHello-Methode als auch die sayGoodbye- Methode.
Dies sind nur zwei Beispiele für die Verwendung von Vererbung in JavaScript, und es gibt andere Möglichkeiten, mit Vererbung in der Sprache zu arbeiten. Ein gutes Verständnis der Vererbung und ihrer Funktionen wird Ihnen helfen, flexiblere und skalierbarere Programme zu erstellen.
Vor- und Nachteile der Vererbung in JavaScript
Vorteile:
1. Flexibilität: Mithilfe der Prototypvererbung können Sie die Funktionalität von Objekten dynamisch erweitern. Klassen und Objekte können geändert und ergänzt werden, ohne dass die gesamte Vererbungshierarchie geändert werden muss.
2. Einfachheit: Das Konzept von Prototypen ist einfacher und klarer als die klassische Vererbung. Es erfordert keine Deklaration von Klassen und speziellen Konstruktoren, sondern basiert auf Prototypen-Objekten.
3. Vielseitigkeit: Die Prototypvererbung ermöglicht es Ihnen, jede Art von Beziehungen zwischen Objekten zu erstellen, ohne nur auf die einfache Vererbung beschränkt zu sein. Sie können Prototypketten erstellen und die Mehrfachvererbung verwenden.
Nachteile:
1. Komplexität: Für Programmierer, die mit Prototypen nicht vertraut sind, kann es schwierig sein, diesen Mechanismus zu verstehen und zu verwenden. Darüber hinaus kann die Prototypvererbung zu einer komplexen Interaktion von Vererbungshierarchien führen, wenn mehrere Prototypen vorhanden sind.
2. Verlust des Kontexts: Bei der Verwendung von Prototypen kann beim Aufrufen von Methoden ein Problem auftreten, dass der this-Kontext verloren geht. Um dieses Problem zu lösen, müssen Sie den Kontext oft explizit mit bind verknüpfen oder Pfeilfunktionen verwenden.
3. Unerwünschte Änderungen: Wenn Sie den Prototyp eines übergeordneten Objekts ändern, kann sich dies auf alle Erben auswirken. Dies kann unvorhersehbar sein und zu Programmfehlern führen.
Insgesamt hat die prototypische Vererbung in JavaScript Vor- und Nachteile. Es ist ein leistungsfähiger und flexibler Mechanismus, erfordert jedoch ein gewisses Wissen und Vorsicht bei der Verwendung.
Best Practices für die Verwendung von Vererbung in JavaScript
1. Verwenden Sie Prototypvererbung:
JavaScript verwendet prototypische Vererbung, daher ist es am besten, sie anstelle von funktionaler oder klassischer Vererbung zu verwenden. Die Prototypvererbung ermöglicht es Ihnen, Methoden und Eigenschaften von Objekten über ihre Prototypen zu erben, wodurch der Code effizienter und flexibler wird.
2. Verwenden Sie Object.create zum Erstellen von Prototypen:
Object.create ist eine Inline-JavaScript-Methode, die ein Prototyp-Objekt akzeptiert und ein neues Objekt mit diesem Prototyp erstellt. Dies ist eine bequeme Möglichkeit, neue Objekte mit bestimmten Eigenschaften und Methoden zu erstellen.
3. Vermeiden Sie tiefe Vererbungsketten:
Eine tiefe Verschachtelung der Vererbung kann zu Codekomplexität und zu einem komplizierteren Debugging führen. Versuchen Sie nach Möglichkeit, eine flache Vererbungsstruktur beizubehalten, damit der Code besser lesbar und verständlich ist.
4. Isolieren Sie Änderungen in untergeordneten Klassen:
Wenn Sie das Verhalten einer geerbten Methode ändern müssen, ist es am besten, dies in der untergeordneten Klasse und nicht in der übergeordneten Klasse zu tun. Dies wird helfen, unerwartete Nebenwirkungen zu vermeiden und den Code modularer und verständlicher zu machen.
5. Verwenden Sie den "Mixins" -Ansatz, um den Code erneut zu verwenden:
Mixins sind eine Methode zur Wiederverwendung von Code, mit der Sie Methoden und Eigenschaften von einem Objekt zu einem anderen hinzufügen können. Dies ist besonders nützlich, wenn Sie Funktionen verwenden müssen, die nicht mit der Vererbung zusammenhängen.
6. Verwenden Sie super, um die übergeordneten Methoden aufzurufen:
ES6 hat das Schlüsselwort super hinzugefügt, mit dem Sie übergeordnete Methoden aus einer untergeordneten Klasse aufrufen können. Dies hilft, die Aufrufhierarchie beizubehalten und verhindert mögliche Probleme mit Pfeilfunktionen.
Ergebnis: Die Vererbung in JavaScript hat viele Möglichkeiten, und die korrekte Verwendung wird Ihnen helfen, saubereren, effizienteren und unterstützten Code zu erstellen. Indem Sie die Best Practices befolgen, können Sie unnötige Probleme vermeiden und die Struktur Ihrer Anwendung verbessern.