TypeError: Der Aufruf eines eingebauten X-Konstruktors ohne new ist verboten
Die JavaScript-Ausnahme "Der Aufruf eines eingebauten X-Konstruktors ohne new ist verboten" tritt auf, wenn Sie versuchen, einen eingebauten Konstruktor ohne Verwendung des new
-Schlüsselworts aufzurufen. Alle modernen Konstruktoren, wie zum Beispiel Promise
und Map
, müssen mit new
aufgerufen werden.
Nachricht
TypeError: Constructor X requires 'new' (V8-based) TypeError: Promise constructor cannot be invoked without 'new' (V8-based) TypeError: calling a builtin X constructor without new is forbidden (Firefox) TypeError: calling X constructor without new is invalid (Safari)
Fehlertyp
Was ist schiefgelaufen?
In JavaScript sind das Aufrufen einer Funktion ohne new
und das Erstellen einer Funktion mit new
zwei unterschiedliche Operationen, und Funktionen können sich je nach Aufrufweise unterschiedlich verhalten.
Abgesehen von den folgenden Legacy-Konstruktoren müssen alle modernen Konstruktoren mit new
aufgerufen werden:
Object()
Function()
(und deren Unterklassen)Error()
(und deren Unterklassen)RegExp()
Array()
Einige andere Konstruktoren, wie Date()
, und primitive Wrapper, wie String()
, Number()
, und Boolean()
, können sowohl mit als auch ohne new
aufgerufen werden, jedoch unterscheiden sich die Rückgabetypen in den beiden Fällen.
Auf jeder Konstruktorseite finden Sie Informationen darüber, ob der Konstruktor mit new
aufgerufen werden muss.
Beispiele
Ungültige Fälle
const m = Map(); // TypeError: calling a builtin Map constructor without new is forbidden
Gültige Fälle
const m = new Map();