js中不支持重载,得使用arguments模拟
arguments是一个变量,,有且仅有一个属性length。会以数组的形式存储了函数执行过程中传递过来的实际参数,即使函数定义没有那么多参数。
arguments是一个变量,,有且仅有一个属性length。会以数组的形式存储了函数执行过程中传递过来的实际参数,即使函数定义没有那么多参数。
看下边这个例子
function sayHi(name,msg){
alert("Hi, "+ name +msg);
}
function sayHi(name){
alert("Hi, " + name);
}
当想调用方法时,
sayHi("tom","welcome come");
本来是想出现 “Hi, tom welcome come”的,但只会出现 “Hi, tom”
因为第二个函数会把第一个函数覆盖,永远执行不了第一个方法。解决方法是使用arguments来判断。
function sayHi(){
if(arguments.length==1){
alert("Hi, " + arguments[0]);
}
else if(arguments.length==2){
alert("Hi ,"+ arguments[0] + arguments[1]);
}
}
调用时可以这样用
sayHi("tom");//结果为 Hi, tom
sayHi("tom","welcome");//结果为 Hi, tom welcome