ES6 中没有 new 关键字调用类构造函数
给定类定义:
class Foo { constructor(x) { if (!(this instanceof Foo)) return new Foo(x); this.x = x; } hello() { return `hello ${this.x}`; } }
这是不可能的不使用 new 关键字直接调用类构造函数。这是因为 ES6 中的类本质上有一个构造函数,该函数在调用该类时会被调用。
调用没有 new 的类会导致错误:
Cannot call a class as a function
此错误消息清楚地表明类构造函数只能使用 new 运算符调用,这是创建类的新实例所必需的。
要克服此限制,请考虑以下方法:
function Foo(x) { this.x = x; this.hello = function() { return `hello ${this.x}`; } }
(new Foo("world")).hello(); // "hello world"
var FooWrapper = function(...args) { return new Foo(...args) }; FooWrapper("world").hello(); // "hello world"
以上是ES6 中可以调用没有'new”的类构造函数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!