非常基本的Javascript构造函数问题

Mis*_*hko 2 javascript constructor

在下面的JavaScript代码中调用main().我的问题是为什么调用第二个构造函数而不是第一个构造函数?我在这里错过了什么?

谢谢 !!

function AllInputs() {
   alert("cons 1");
   this.radioInputs = [];
   alert(this);
}

function AllInputs(radioElement) {
   alert("cons 2");
   this.radioInputs = [radioElement];
   alert(this);
}

AllInputs.prototype.toString = function() {
   return "[object AllInputs: radioInputs: " + this.radioInputs.length + "]";
}

function main() {
   var result = new AllInputs();
}
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 7

Javascript不支持重载函数.

定义相同的函数两次时,第二个定义将替换第一个定义.

相反,您应该创建一个函数,并检查arguments.length传递了多少个参数.

例如:

function AllInputs(radioElement) {
   this.radioInputs = arguments.length ? [radioElement] : [];
   alert(this);
}
Run Code Online (Sandbox Code Playgroud)