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
如果传递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);