TypeError: calling a builtin X constructor without new is forbidden

JavaScript 異常“呼叫內建的 X 建構函式時禁止不使用 new”在嘗試不使用 new 關鍵字呼叫內建建構函式時發生。所有現代建構函式,例如 PromiseMap,都必須與 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)

錯誤型別

TypeError

哪裡出錯了?

在 JavaScript 中,不帶 new 呼叫函式和帶 new 構造函式是兩個不同的操作,函式可能會根據其呼叫方式而表現不同。

除了以下舊版建構函式外,所有現代建構函式都必須與 new 一起呼叫

其他一些建構函式,例如 Date(),以及原始包裝器,例如 String()Number()Boolean(),也可以帶或不帶 new 呼叫,但在兩種情況下返回型別不同。

在每個建構函式頁面上,您可以找到有關建構函式是否必須與 new 一起呼叫的資訊。

示例

無效案例

js
const m = Map(); // TypeError: calling a builtin Map constructor without new is forbidden

有效情況

js
const m = new Map();

另見