js面向对象编程:如何实现方法重载

   js中如何实现方法重载?这涉及到三个问题

1同名函数的调用问题

2函数中特殊的参数arguments

3如何利用arguments实现方法重载


   1同名函数的调用问题

   都知道在js中如果存在多个名称相同的函数,则调用实际每次都只使用最后一个,js其实是没有重载的,也就是说,如果定义了多个同名的函数,单参数不一样,在调用时,js不管参数个数,只管前后顺序

   例如:

  

 function test1(arg1)
		{
		  alert("参数1:"+arg1);		
		}
        function test1(arg1,arg2,arg3)
		{
		   alert("参数1:"+arg1+"参数2:"+arg2+"参数3:"+arg3);
		
		}
//测试代码
		 function test(){	
		    test1("1")
	     }	

   虽然我们调用的是test1("1"),传递了一个参数,但实际调用的却是test1(arg1,arg2,arg3),并没有因为我们传递了一个参数,而调用只有一个参数的方法。

  2函数中特殊的参数arguments

     如果我们使用如下的代码

 

 function test1(arg1,arg2,arg3)
		{
		   alert("参数1:"+arg1+"参数2:"+arg2+"参数3:"+arg3);
		
		}
		function test1(arg1)
		{
		  alert("参数1:"+arg1);		
		}
	//测试代码
		 function test(){	
		    test1("1","2")
	     }	
我们知道调用的始终是test1(arg1),也就是只有一个参数的函数,但如何获取传递的其他参数呢?

  这就要用到函数中特殊的参数arguments,arguments包含了所有传递给函数的参数

function test1()
		{
		  var text="";
		  for(var i=0;i<arguments.length;i++){
		  text+="参数"+i+":"+arguments[i];
		   }
		  alert(text);		
		}
//测试代码
		 function test(){	
		    test1("1");
			 test1("1","2");
			  test1("1","2","3");
	     }

经过测试发现,arguments包含了传递给函数的所有参数,并且arguments.length根据实际传递参数的个数的不同而不同,arguments.length代表了实际传递给函数参数的个数。

3如何在js中实现函数的重载?

 经过以上的测试发现,在js中不能直接实现函数的重载,但有没有办法实现类似重载效果的方法呢?

  可以,主要就是利用arguments

 例如:

function test1()
		{
		  var text="";
		   if(arguments.length==1)
		   {
		     //调用一个参数的方法
		   }
		  else if(arguments.length==2)
		   {
		     //调用两个参数的方法
	          }  
                   else   {   //其他的方法  
                    } 
                }


  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值