TypeError: calling a builtin X constructor without new is forbidden
JavaScript 異常“呼叫內建的 X 建構函式時禁止不使用 new”在嘗試不使用 new 關鍵字呼叫內建建構函式時發生。所有現代建構函式,例如 Promise 和 Map,都必須與 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 一起呼叫
Object()Function()(及其子類)Error()(及其子類)RegExp()Array()
其他一些建構函式,例如 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();