一、根据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 ????????????else13 ????????????????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); //结果:1129 ????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);
第202天:js---重载和多态
原文地址:https://www.cnblogs.com/le220/p/8588258.html