第204天:js---重载和多态

一、根据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);

 

posted @ 2018-03-25 22:47  半指温柔乐  阅读(985)  评论(0编辑  收藏  举报