众所周知,js是函数不支持重载和默认参数的,但是我们可以使用一些其他方法来模拟这个方法的实现。
首先看一下重载的定义:函数名相同,函数的参数列表不同(包括参数个数和参数类型),至于返回类型可同可不同。
以及默认参数的定义:默认参数指的是当函数调用中省略了实参时自动使用的一个值。
那么如何实现这两个功能呢,一个很简单的方法就是使用arguments来进行模拟。
下面先说实现重载的方法:
function overLoad(){//用这样的方法模拟重载
if(arguments[0]){//如果存在第一个参数
if(arguments[1]){//如果第一个参数第二个参数都存在
//to do...
alert(arguments[0]+arguments[1]);
}
else{//如果只有第一个参数
alert(arguments[0]);
//to do...
}
}
else{//如果无参
alert("null");
//to do...
}
}
接下来是实现默认参数的方法:
function defaultArg(){//用这样的方法模拟默认参数
var a = arguments[0]?arguments[0]:"hello";//第一个参数的默认值为hello
var b = arguments[1]?arguments[1]:"world";//第二个参数的默认值为world
//...
alert(a+b);
}
下面进行一下测试:
//重载测试
overLoad();//null
overLoad("hello ");//hello
overLoad("hello ","world");//hello world
//默认参数测试
defaultArg();//hello world
defaultArg("你好 ");//你好 world
defaultArg("你好 ","世界");//你好 世界