办法总是有的,我们可以利用JavaScript中的特殊对象arguments来模拟函数重载。用它来判断传入参数的个数或类型以区分重载。
1.根据参数个数重载
js判断传入参数数量可以用arguments.length这个属性来判断;
 代码如下:
function add() {
 if (arguments.length == 1) {
 alert(arguments[0] + 10);
 }
 else if (arguments.length == 2) {
 alert(arguments[0] + arguments[1]);
 }
}
//函数调用
add(10);
add(10, 20);
 script>
2.根据参数类型重载
判断变量类型的3种方法:
1.用 typeof 语句判断变量类型,typeof语句返回类型对应的字符串。
2.用 instanceof 语句判断变量类型,instanceof语句返回true/false。
3.用 constructor 属性判断变量类型,这个属性返回用来构造该变量的构造函数引用。
对照表:可以看出用 typeof 不能准确的判断出具体的类型,所以我们用 constructor 来进行判断。
typeof string number object function boolean object object
constructor String Number Object Function Boolean Array User Define
 代码如下:
function add() 
{
 if (arguments.length == 0) return 0;
 var sum=0;
 for(var i=0; i
 if(arguments[i].constructor == Number){
 //或者改为:if(arguments[i] instanceof Number)
 //或者改为:if(typeof(arguments[i])=="number")
 sum += arguments[i];
 }
 }
 return sum;
}
//函数调用
alert(add(10));
alert(add(10,20));
 script>
小伙伴们是否理解了javascript函数重载的方法了呢,有疑问就留言吧
下载本文