什么是重载?
程序中定义多个相同的函数名,不同参数列表的函数,调用者不必区分每个函数的参数,执行时,程序根据传入的参数个数,自动执行。
js语法不支持重载!但可用arguments对象模拟重载效果。
arguments对象:
在函数对象内自动创建,专门接受所有参数值的类数组对象。
arguments对象具有如下属性:
—— length:返回实际传入的参数的个数
—— callee:返回当前函数的应用(匿名函数可以使用该属性实现递归调用)
arguments.length:获得传入的参数个数
arguments[i]:获得某个参数值
即时定义了参数变量,arguments对象同样会收到所有参数值
js模拟函数如下:
function calc( ){
//如果用户传入一个参数,求平方
if(arguments.length==1){
alert(arguments[0]*arguments[0]);
}else if(arguments.length==2){
//如果用户传入两个参数,就求和
alert(arguments[0]+arguments[1]);
}
}
calc(4); //16
calc(4,5); //9