我在我的Javascript代码中使用如下方法重载.
function somefunction()
{
//1st function
}
function somefunction(a)
{
//2nd function
}
function somefunction(a,b)
{
//3rd function
}
somefunction(); // function call goes here
Run Code Online (Sandbox Code Playgroud)
我不明白的是,如果我调用somefunction()javascript应该调用第一个函数,但问题是javascript实际上调用第三个函数.这是为什么?如何调用第1和第2功能?这是什么原因?有没有一种在Javascript中实现方法重载的正确方法?什么是行业标准?
实现一种机制,允许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);
}
}
Run Code Online (Sandbox Code Playgroud)
在此代码中,用户有三个可以使用的构造函数,每个构造函数都使用不同数量的参数.一个用法示例如下:
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, …Run Code Online (Sandbox Code Playgroud) javascript constructor overloading constructor-overloading ecmascript-6