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"
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3