The JavaScript exception "calling a builtin X constructor without new is forbidden" occurs when you try to call a builtin constructor without using the new
keyword. All modern constructors, such as Promise
and Map
, must be called with new
.
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)Error type What went wrong?
In JavaScript, calling a function without new
and constructing a function with new
are two distinct operations, and functions can behave differently depending on how they are called.
Apart from the following legacy constructors, all modern constructors must be called with new
:
Object()
Function()
(and its subclasses)Error()
(and its subclasses)RegExp()
Array()
Some other constructors, such as Date()
, and primitive wrappers, such as String()
, Number()
, and Boolean()
, can also be called with or without new
, but the return types differ in the two cases.
On every constructor page, you can find information about whether the constructor must be called with new
.
const m = Map(); // TypeError: calling a builtin Map constructor without new is forbidden
Valid cases See also
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4