TypeError: class 构造函数必须使用“new”调用
消息
TypeError: Class constructor X cannot be invoked without 'new' (V8-based) TypeError: Class constructors cannot be invoked without 'new' (V8-based) TypeError: class constructors must be invoked with 'new' (Firefox) TypeError: Cannot call a class constructor without |new| (Safari)
错误类型
哪里出错了?
在 JavaScript 中,调用函数而不使用 new
和使用 new
构造函数是两个不同的操作,并且函数的行为可能因调用方式而异。
传统上,JavaScript 函数既用作构造函数又用作普通函数,并且可以使用 new.target
检测其调用方式。但是,类构造函数始终是构造函数,不能作为普通函数调用。
示例
无效情况
js
class X {}
X(); // TypeError: class constructors must be invoked with 'new'
有效情况
js
class X {}
new X();