【问题标题】:Workaround to give an ES6 class multiple constructors?ES6 类具有多个构造函数的解决方法?
【发布时间】:2022-10-24 10:18:34
【问题描述】:
我正在尝试使用两个构造函数创建一个 ES6 类。代码如下所示:
class MyClass {
constructor(a, b) {
this.a = a;
this.b = b;
}
constructor(c) {
this.a = c;
this.b = c;
}
}
但我收到语法错误Uncaught SyntaxError: A class may only have one constructor。是否有任何解决方法可以让我拥有多个构造函数,或者我是否仅限于 JS 中的一个构造函数?
【问题讨论】:
标签:
javascript
class
ecmascript-6
【解决方案1】:
JavaScript 没有内置的重载。但是你可以使用默认参数做你想做的事。
class myClass {
constructor(a, b = a) {
this.a = a;
this.b = b;
}
}
如果它不像你的例子那么简单,你可以给b 一些其他默认值,这不是一个可能的实际值。然后您可以检查该值是否为默认值并运行不同的代码。
class myClass {
constructor(a, b = undefined) {
if (b === undefined) {
// do the 1-argument initialization
} else {
// do the 2-argument initialization
}
}
}