7.4 Objektorientierung in JavaScript
7.4.1 Objektorientierte Programmierung
7.4.2 Objekte mit object literals erstellen
7.4.3 Objekte mit Konstruktor-Funktionen erstellen
7.4.4 Objekte über class
-Klassen erstellen
7.4.5 Vererbung in JavaScript
7.4.6 Callbacks
7.4.7 Selbsttest OOP
Wie in vielen modernen Programmiersprachen wird auch in JavaScript objektorientiert programmiert. Neben vielen mitgelieferten Objekten (selbst String
oder Array
sind eigentlich Objekte in JavaScript), können eigene Objekte erstellt werden, um Daten und Funktionalität zu kapseln. Die objektorientierten Aspekte von JavaScript sind sehr wichtig, um ein tieferes Verständnis der Sprache zu erhalten. Im Folgenden werden einige der wichtigsten Grundlagen dazu vorgestellt.
Eine gute Einführung als Ergänzung zu diesem Kapitel findet sich bei Mozilla Developer. Die wichtigsten Begriffsdefinitionen sind:
Hier ist die angepasste Version mit einem besseren Beispiel:
-
Klasse: Eine "Behälter", in dem Eigenschaften und Methoden definiert werden. Klassen ermöglichen die Modellierung von realen oder abstrakten Konzepten, indem sie sowohl Informationen (Eigenschaften) als auch Verhalten (Methoden) in einer strukturierten Einheit bündeln. In JavaScript können Klassen mit der
class
-Syntax erstellt werden. -
Objekt: Objekte können in JavaScript durch Instanziierung einer Klasse gebildet werden, aber auch durch Objektliterale (
{}
) oder durch Konstruktorfunktionen erstellt werden. -
Eigenschaft: Eine "Variable" eines Objekts, die einen bestimmten Wert hält, beispielsweise die Art eines Baumes ("Eiche") oder der Stromverbrauch eines Geräts.
-
Methode: Eine Funktion, die einem Objekt zugeordnet ist und dessen Verhalten definiert, wie etwa das Wachsen eines Baumes oder das Einschalten eines Geräts.
-
Konstruktor: Eine spezielle Methode innerhalb einer Klasse, die beim Erstellen einer neuen Instanz aufgerufen wird, um das Objekt zu initialisieren.
-
Vererbung: Ein Mechanismus, bei dem eine Klasse die Eigenschaften und Methoden einer anderen Klasse übernimmt, um Code-Wiederverwendung und Hierarchien zu ermöglichen.
-
Namespace: Ein Container, der es uns ermöglicht, Funktionalitäten unter einem eindeutigen, applikationsspezifischen Namen zu bündeln, um Namenskonflikte zu vermeiden.