TypeError: Das Aufrufen eines eingebauten X-Konstruktors ohne new ist verboten
Die JavaScript-Ausnahme "Das Aufrufen eines eingebauten X-Konstruktors ohne new
ist verboten" tritt auf, wenn Sie versuchen, einen eingebauten Konstruktor aufzurufen, ohne das Schlüsselwort new
zu verwenden. Alle modernen Konstruktoren, wie Promise
und Map
, müssen mit new
aufgerufen werden.
Meldung
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 Konstruktionieren einer Funktion mit new
zwei unterschiedliche Operationen, und Funktionen können sich unterschiedlich verhalten, je nachdem, wie sie aufgerufen werden.
Abgesehen von den folgenden veralteten Konstruktoren müssen alle modernen Konstruktoren mit new
aufgerufen werden:
Object()
Function()
(und seine Unterklassen)Error()
(und seine Unterklassen)RegExp()
Array()
Einige andere Konstruktoren, wie Date()
, und primitive Wrapper, wie String()
, Number()
, und Boolean()
, können ebenfalls mit oder ohne new
aufgerufen werden, aber die Rückgabetypen unterscheiden sich in den beiden Fällen.
Auf jeder Konstruktorseite können Sie Informationen darüber finden, 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();