时间:2021-05-26
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
如果我们使用如下的代码
我们知道调用的始终是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 { //其他的方法 } }声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Python基础教程之闭包的使用方法前言:闭包(closure)是函数式编程的重要的语法结构。函数式编程是一种编程范式(而面向过程编程和面向对象编程也都是编程范
JavaScriptisanObjectOrientedProgramming(OOP)language.JS是面向对象的编程语言(面向对象)。(这里是基于对象
本文实例讲述了C#面向对象编程之猜拳游戏实现方法。分享给大家供大家参考。具体实现方法如下:1.需求现在要制作一个游戏,玩家与计算机进行猜拳游戏,玩家出拳,计算机
本文实例讲述了JS面向对象编程对象和构造函数。分享给大家供大家参考,具体如下:面向对象编程(ObjectOrientedProgramming,缩写为OOP)是
JavaScript作为一个面向对象语言(JS是基于对象的),可以实现继承是必不可少的,但是由于本身并没有类的概念,所以不会像真正的面向对象编程语言通过类实现继