zoukankan      html  css  js  c++  java
  • 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   {   //其它的方法  
                        } 
                    }
    


  • 相关阅读:
    改变人生的32句励志名言(转载)
    Unrecognized Attribute 'xmlns' when working with VS.NET Express Edition
    学外语的十条珍贵经验(转)
    自考版“八荣八耻”
    弟弟手机丢了
    近期准备学习3本书
    盗版vs2005.net买不到
    非常希望有“苏州.net俱乐部”
    My twenty,the end of a dynasty.
    死递归:“段错误”产生的可能原因之一
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6973444.html
Copyright © 2011-2022 走看看