js面向对象编程之如何实现方法重载
2023-06-13 09:15:33 时间
js中如何实现方法重载?这涉及到三个问题
1.同名函数的调用问题
2.函数中特殊的参数arguments
3.如何利用arguments实现方法重载
1、同名函数的调用问题
都知道在js中如果存在多个名称相同的函数,则调用实际每次都只使用最后一个,js其实是没有重载的,也就是说,如果定义了多个同名的函数,单参数不一样,在调用时,js不管参数个数,只管前后顺序
例如:
functiontest1(arg1) { alert("参数1:"+arg1); } functiontest1(arg1,arg2,arg3) { alert("参数1:"+arg1+"参数2:"+arg2+"参数3:"+arg3); } //测试代码 functiontest(){ test1("1") }
虽然我们调用的是test1("1"),传递了一个参数,但实际调用的却是test1(arg1,arg2,arg3),并没有因为我们传递了一个参数,而调用只有一个参数的方法。
2、函数中特殊的参数arguments
如果我们使用如下的代码
functiontest1(arg1,arg2,arg3) { alert("参数1:"+arg1+"参数2:"+arg2+"参数3:"+arg3); } functiontest1(arg1) { alert("参数1:"+arg1); } //测试代码 functiontest(){ test1("1","2") }
我们知道调用的始终是test1(arg1),也就是只有一个参数的函数,但如何获取传递的其他参数呢?
这就要用到函数中特殊的参数arguments,arguments包含了所有传递给函数的参数
functiontest1() { vartext=""; for(vari=0;i<arguments.length;i++){ text+="参数"+i+":"+arguments[i]; } alert(text); } //测试代码 functiontest(){ test1("1"); test1("1","2"); test1("1","2","3"); }
经过测试发现,arguments包含了传递给函数的所有参数,并且arguments.length根据实际传递参数的个数的不同而不同,arguments.length代表了实际传递给函数参数的个数。
3、如何在js中实现函数的重载?
经过以上的测试发现,在js中不能直接实现函数的重载,但有没有办法实现类似重载效果的方法呢?
可以,主要就是利用arguments
例如:
functiontest1() { vartext=""; if(arguments.length==1) { //调用一个参数的方法 } elseif(arguments.length==2) { //调用两个参数的方法 } else{//其他的方法 } }
相关文章
- js数组删除指定数据方法「建议收藏」
- 利用js实现不同域名显示不同备案的方法
- 原生 JS 实现 HTML 转 Markdown,以及其实现逻辑(html2md.js 或 html2markdown.js)
- js jquery 页面加载初始化方法详解编程语言
- 用js实现计算代码行数的简单方法附代码
- js回车提交表单两种实现方法
- js去除重复字符串两种实现方法
- .NET中利用js让子窗体向父页面传值的实现方法
- 解决JS浮点数运算出现Bug的方法
- js获得鼠标的坐标值的方法
- JS跳转页面延迟2种方法
- jquery全选/全不选/反选另一种实现方法(配合原生js)
- JS替换和时间插件的结合使用方法
- JS调用CS里的带参方法实例
- 在服务端(Page.Write)调用自定义的JS方法详解
- js与jquery获取父级元素,子级元素,兄弟元素的实现方法
- 引入JS文件IE6报语法错误或缺少对象问题的解决方法
- node.js中的fs.readdir方法使用说明
- JS循环遍历JSON数据的方法
- C#执行js动态编译的方法