目的
JavaScript ECMA6 でコンストラクターのオーバーロードを許可するメカニズムを実装する
これが重複していない理由
トピックJavaScript ES6 がマルチコンストラクター クラスをサポートしないのはなぜですか? 、類似はこれと同じではありませんが。もう 1 つのトピックは、古い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);
}
}
このコードでは、ユーザーが使用できる 3 つのコンストラクターがあり、それぞれが異なる量のパラメーターを受け取ります。使用例は次のとおりです。
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 クラスに同様のメカニズムを実装する方法はありますか? そうでない場合、最良/最も近い代替手段は何ですか?