Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit März 2016 browserübergreifend verfügbar.
Die constructor-Methode ist eine spezielle Methode einer Klasse zur Erzeugung und Initialisierung einer Objektinstanz dieser Klasse.
Hinweis: Diese Seite stellt die constructor-Syntax vor. Informationen zur constructor-Eigenschaft, die in allen Objekten vorhanden ist, finden Sie unter Object.prototype.constructor.
Es gibt einige zusätzliche Syntaxbeschränkungen:
Ein Konstruktor ermöglicht es Ihnen, jede benutzerdefinierte Initialisierung bereitzustellen, die durchgeführt werden muss, bevor andere Methoden auf einem instanziierten Objekt aufgerufen werden können.
Wenn Sie keinen eigenen Konstruktor bereitstellen, wird ein Standardkonstruktor für Sie bereitgestellt. Wenn Ihre Klasse eine Basisklasse ist, ist der Standardkonstruktor leer:
Wenn Ihre Klasse eine abgeleitete Klasse ist, ruft der Standardkonstruktor den übergeordneten Konstruktor auf und gibt alle bereitgestellten Argumente weiter:
Hinweis: Der Unterschied zwischen einem expliziten Konstruktor wie dem oben genannten und dem Standardkonstruktor besteht darin, dass letzterer tatsächlich nicht den Array-Iterator durch Argumentverteilung aufruft.
Das ermöglicht, dass der folgende Code funktioniert:
Die ValidationError-Klasse benötigt keinen expliziten Konstruktor, da sie keine benutzerdefinierte Initialisierung durchführen muss. Der Standardkonstruktor kümmert sich dann um die Initialisierung des übergeordneten Error-Objekts mit dem gegebenen Argument.
Wenn Sie jedoch einen eigenen Konstruktor bereitstellen und Ihre Klasse von einer übergeordneten Klasse abgeleitet ist, müssen Sie den Konstruktor der übergeordneten Klasse explizit mit super() aufrufen. Zum Beispiel:
Die Verwendung von new auf einer Klasse durchläuft die folgenden Schritte:
Innerhalb des Konstruktor-Körpers können Sie auf das erstellte Objekt über this zugreifen und auf die Klasse, die mit new aufgerufen wird, durch new.target zugreifen. Beachten Sie, dass Methoden (einschließlich Gettern und Settern) und die Prototypenkette bereits auf this initialisiert sind, bevor der Konstruktor ausgeführt wird. Dies bedeutet, dass public Felder der abgeleiteten Klasse nicht vollständig initialisiert sind, wenn sie im Konstruktor der übergeordneten Klasse aufgerufen werden, und private Felder zu einem TypeError führen.
Die constructor-Methode kann einen Rückgabewert haben. Während die Basisklasse alles von ihrem Konstruktor zurückgeben kann, muss die abgeleitete Klasse ein Objekt oder undefined zurückgeben, andernfalls wird ein TypeError ausgelöst.
Wenn der Konstruktor der übergeordneten Klasse ein Objekt zurückgibt, wird dieses Objekt als this-Wert verwendet, auf dem die Klassenfelder der abgeleiteten Klasse definiert werden. Dieser Trick wird als "Return Overriding" bezeichnet, was es ermöglicht, dass Felder der abgeleiteten Klasse (einschließlich privater Felder) auf nicht verwandten Objekten definiert werden.
Der constructor folgt der normalen [Methoden]-Syntax(/de/docs/Web/JavaScript/Reference/Functions/Method_definitions), daher können Standardparameterwerte, Restparameter usw. verwendet werden.
Der Konstruktor muss ein literaler Name sein. Berechnete Eigenschaften können keine Konstruktoren werden.
Async-Methoden, Generator-Methoden, Zugriffsmethoden und Klassenfelder dürfen nicht constructor genannt werden. Private Namen dürfen nicht #constructor genannt werden. Jedes Mitglied namens constructor muss eine einfache Methode sein.
Dieser Codeausschnitt stammt aus dem Beispiel für Klassen (Live-Demo).
super() ruft den Konstruktor auf, der das Prototyp der aktuellen Klasse ist. Wenn Sie das Prototyp der aktuellen Klasse selbst ändern, ruft super() den Konstruktor auf, der das neue Prototyp ist. Das Ändern der prototype-Eigenschaft der aktuellen Klasse beeinflusst nicht, welchen Konstruktor super() aufruft.
| ECMAScript® 2027 Language Specification # sec-static-semantics-constructormethod |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.