• JavaScript中通过arguments对象实现对象的重载


    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    <script type="text/javascript">
    /*
     *1.js 中不存在函数的重载 
     2.js函数定义时候的形參个数,和运行时候时。传递的实參的个数能够不一样。
     3.js运行时候。会将真实的參数,封装成组arguments
     
     */
    function add(a){
    	return a+10;
    }
    var add=new Function("a","return a+10");
    //alert(add(5));
    function add(num1,num2){
    	return num1+num2;
    }
    var add=new Function("num1","num2","return num1+num2");
    alert(add(5,6));
    alert(add(5));//这样调用的结果是NaN:由于调用的时后定义的两个參数的函数
    //也就是尽管有var的声明。可是javascript中仅仅要变量名称同样。后定义的就会覆盖
    //之前定义的=======得出的结论就是js中不存在函数的重载。
    
    //-------------------用arguments对象模拟方法的重载-----
    //-根据不同的參数个数。调用不同的代码块。最多25个參数
    function addNum(){
    	alert(arguments.length);
    	for(var x=0;x<arguments.length;x++){
    		alert(arguments[x]);
    	//这个对象仅仅能爱函数体内
    	}
    	if(arguments.length==1){
    		return arguments[0]+10;
    	}else if(arguments.length==2){
    		return arguments[0]+arguments[1];
    	}else{
    		return "參数错误。请核对";
    	}	
    }
    var value=addNum(10,20,30);
    alert("函数的返回值:"+value);//结果value的值就是:"參数错误,请核对"
    //其实,是通过參数的推断。去实现调用不同的函数功能,而且返回不同的值;这样做相似的实现了java中的重载
    //可是本质上,js中是没有重载的,同样的变量,在不同的位置出现。若赋值后。必定会覆盖前面声明的变量。当然
    //这里面排除掉函数内部的量和函数外部变量的这一种关系。

    </script> </head> <body> </body> </html>


  • 相关阅读:
    [模板]RMQ(冲刺准备中)
    洛谷 P2569[SCOI2010]股票交易(动规+单调队列)
    洛谷 P3659 [USACO17FEB]Why Did the Cow Cross the Road I G
    粗略了解fill与fill_n
    计蒜客D2T2 蒜头君的排序(动态维护树状数组)
    洛谷 P3478 [POI2008]STA-Station
    洛谷 P2899 [USACO08JAN]手机网络Cell Phone Network
    洛谷 P3112 [USACO14DEC]后卫马克Guard Mark
    洛谷 P3092 [USACO13NOV]没有找零No Change
    洛谷 P2850 [USACO06DEC]虫洞Wormholes 判负环
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/9942043.html
Copyright © 2020-2023  润新知