gpt4 book ai didi

javascript - 如何在 JavaScript ECMA6 中重载构造函数?

转载 作者:可可西里 更新时间:2023-11-01 01:51:03 25 4
gpt4 key购买 nike

<分区>

目标

在 JavaScript ECMA6 中实现一种允许构造函数重载的机制

为什么这不是重复的

话题Why doesn't JavaScript ES6 support multi-constructor classes? , 虽然 similar 和这个不一样。另一个主题仅关注使用 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#,这是一个简单的示例,因为这些语言具有构造函数重载。

但是,从 documentation on classes from MDN可以得出结论,JavaScript 没有。

问题

  1. 有没有办法使用 ECMA6 为 JavaScript 类实现类似的机制?如果不是,最好/最接近的替代方案是什么?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com