在很多面向对象的高级语言中,都有方法的重载。而javascript没有方法重载这个概念。但是我们可以通过arguments这个参数来伪装成函数的重载
在模拟之前我们先看一下代码:
//表面上没有声明形式参数的函数 function fun() { alert("示例代码"); } fun("小明", 100, true);//自己写了三个实际参数
我们可以在代码中可以得到实际参数吗?答案是肯定的:请看代码:
//表面上没有声明形式参数的函数 function fun() { alert(arguments[0]);//得到第一个实际参数的值。 alert(arguments[1]);//得到第二个实际参数的值。 alert(arguments[2]);//得到第三个实际参数的值。 alert(arguments.length);//得到实际参数的个数。 alert("示例代码"); } fun("小明", 100, true);//自己写了三个实际参数
有了以上知识点后,模拟方法重载就有思路了。我们可以通过实际参数的个数来作个判断,从而执行不同的逻辑代码。简单代码如下:
function fun() { if (arguments.length == 0) { alert("执行没有实际参数的代码"); } else if(arguments.length==1) { alert("执行传入一个实际参数的代码"); } else if(arguments.length==2) { alert("执行传入两个实际参数的代码"); } } fun(); fun("小明"); fun("小明", "小花");