客观的
在 JavaScript ECMA6 中实现允许构造函数重载的机制
为什么这不是重复的
主题为什么 JavaScript ES6 不支持多构造函数类?,虽然相似和这个不一样。另一个主题仅关注使用旧ECMAScript 版本的构造函数重载,而本主题关注 ECMA6。如果您正在寻找更新的答案,那就是这个地方。
背景
我有一个带有给定构造函数的 JavaScript 类,我希望用户在实例化对象时能够拥有不同的构造函数。我假装的一个例子可能如下:
const DEFAULT_WHEEL_NUMBER = 4;
const DEFAULT_COLOR = "black";
const DEFAULT_NAME = "myCar";
class Car{
constructor(numberWheels, aName, aColor){
this.wheelsNum = numberWheels;
this.name = aName;
this.color = aColor;
}
constructor(aName){
this(DEFUALT_WHEEL_NUMBER, aName, DEFAULT_COLOR);
}
constructor(){
this(DEFUALT_WHEEL_NUMBER, DEFAULT_NAME, DEFAULT_COLOR);
}
}
在这段代码中,用户可以使用三个构造函数,每个构造函数采用不同数量的参数。使用示例如下:
var car1 = new Car(3, "tricicle-car", "white");
var car2 = new Car("Opel"); //creates black car with 4 wheels called Opel
var car3 = new Car(); //creates a black car, with 4 wheels called myCar
问题
如果使用 Java 或 C#,这是一个简单的示例,因为这些语言具有构造函数重载。
但是,从 MDN 的类文档中可以得出结论,JavaScript 没有。
问题
- 有没有办法使用 ECMA6 为 JavaScript 类实现类似的机制?如果不是,最好/最接近的选择是什么?