一、根据arguments个数实现重载
js本身不支持重载,所以只能通过其他方式实现,arguments检测传参的个数,然后再执行不同的方式
1 function add() { 2 var sum = 0 ; 3 for ( var i = 0 ; i < arguments.length; i ++ ) { 4 sum += arguments[i]; 5 } 6 return sum; 7 } 8 alert(add()); 9 alert(add( 1 , 2 )); 10 alert(add( 1 , 2 , 3 ));
二、检测数据类型实现重载
根据传参的类型,调用不同的方法,用typeof进行检测
1 //检测数据类型实现重载 typeof 2 var MyClass=function(){ 3 var AddNum=function(a,b){ 4 return a+b; 5 } 6 var AddString=function(a,b){ 7 return "I am here"+a+b; 8 } 9 this.Add=function(a,b){ 10 if(typeof(a)=="number") 11 return AddNum(a,b); 12 else 13 return AddString(a,b); 14 } 15 } 16 17 function add(a,b){ 18 return a+b; 19 } 20 21 function add(a,b){ 22 return "I am here"+a+b; 23 } 24 25 var MyObj = new MyClass(); 26 var X = MyObj.Add(5,6); 27 var Y = MyObj.Add("A","FFFFFF"); 28 alert(X); //结果:11 29 alert(Y); //结果:I am hereAFFFFFF
三、jquery中的重载
如果传递2个参数表示获取值,传递三个参数表示赋值
1 function attr(id, key, value){ 2 var dom = $$.$id(id); 3 var args = arguments.length; 4 if(args ===3 ){ 5 dom.setAttribute(key, value); 6 }else{ 7 return dom.getAttribute(key); 8 } 9 } 10 attr(1,2); 11 attr(1,2,3);