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>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。