js中方法重载如何实现?以及函数的参数问题

如题所述

但每一个函数都有一个特殊的参数arguments,利用它可以实现方法的重载。例如:复制代码 代码如下:function Add(firstnumber,sencondnumber) {return firstnumber+sencondnumber;}只能处理两个参数,如果有多个参数,或者没有参数,一个参数的情况都是处理不了的。如果没有传递参数,则firstnumber,sencondnumber都是未定义的,如果传递了一个参数,就相当于只给firstnumber赋值了,sencondnumber依然是未定义。相反如果传递了多于两个的参数,则相当于firstnumber,sencondnumber都赋值了,虽然还有其他的参数,但处理时都忽略掉了。如果能获取其他的参数,自然就可以处理了。此时应该就可以想到函数的特殊参数arguments,这个包含了传递给函数的所有参数,利用它就可以实现方法重载的效果。以上的方法修改如下:复制代码 代码如下:function Add(firstnumber,sencondnumber) {if (arguments.length == 0)//没有传递参数{return null;}else if (arguments.length == 1) {//传递的是一个参数return firstnumber;//也可以写为 return arguments[0];}else if(arguments.length == 2)//传递的是两个参数{return firstnumber+sencondnumber;//也可以写为 return arguments[0]+arguments[1];}else {var total=0;for (var i = 0; i < arguments.length; i++) {total=total+arguments[i]}return total;}}当然这种方法的弊端就是参数的顺序不能打乱,如果函数实现依赖于参数的顺序,就必须进行特殊处理,例如传递null来占位。
温馨提示:答案为网友推荐,仅供参考
相似回答