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   {   //其它的方法  
                    } 
                }
原文:http://www.cnblogs.com/slgkaifa/p/6973444.html