TypeError: Klassenkonstruktoren müssen mit 'new' aufgerufen werden
Die JavaScript-Ausnahme "class constructors must be invoked with 'new'" tritt auf, wenn ein Klassenkonstruktor ohne das Schlüsselwort new
aufgerufen wird. Alle Klassenkonstruktoren müssen mit new
aufgerufen werden.
Meldung
TypeError: Class constructor X cannot be invoked without 'new' (V8-based) TypeError: Class constructors cannot be invoked without 'new' (V8-based) TypeError: class constructors must be invoked with 'new' (Firefox) TypeError: Cannot call a class constructor without |new| (Safari)
Fehlertyp
Was ist schiefgelaufen?
Im JavaScript sind das Aufrufen einer Funktion ohne new
und das Konstruktoren einer Funktion mit new
zwei unterschiedliche Operationen, und Funktionen können sich je nachdem, wie sie aufgerufen werden, unterschiedlich verhalten.
Traditionell wurden JavaScript-Funktionen sowohl als Konstruktoren als auch als normale Funktionen verwendet und können erkennen, wie sie aufgerufen wurden, indem sie new.target
verwenden. Klassenkonstruktoren sind jedoch immer Konstruktoren und können nicht als normale Funktionen aufgerufen werden.
Beispiele
Ungültige Fälle
class X {}
X(); // TypeError: class constructors must be invoked with 'new'
Gültige Fälle
class X {}
new X();