三种方法:
1、根据传入参数的类型不同执行不同操作
2、通过某些特定参数是否存在进行判断
3、通过传入参数的个数进行判断
书中主要描述了第三种方法,即:通过传入参数的个数进行判断
1)通过if-else或者switch 会冗长且不整洁
2)如果按照如下思路,添加想要的重载方法,漂亮且整洁:
var ninjia = {};
addMethod(ninjia,'whatever',function(){/*do sth.*/});
addMethod(ninjia,'whatever',function(a){/*do sth. else*/})
addMethod(ninjia,'whatever',function(a,b){/*yet do sth. else*/})
具体的函数重载 方法 addMethod
function addMethod(object,name,fn){
var old = object[name];
object[name] = function(){
if(fn.length == arguments.length)
return fn.apply(this,arguments);
else if(typeof old == 'function')
return old.apply(this,arguments);
};
}