js面向对象编程之如何实现方法重载


Posted in Javascript onJuly 02, 2014

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

如果我们使用如下的代码

function test1(arg1,arg2,arg3) 
{ 
alert("参数1:"+arg1+"参数2:"+arg2+"参数3:"+arg3); 

} 
function test1(arg1) 
{ 
alert("参数1:"+arg1); 
} 
//测试代码 
function test(){ 
test1("1","2") 
}

我们知道调用的始终是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 { //其他的方法 
} 
}
Javascript 相关文章推荐
在你的网页中嵌入外部网页的方法
Apr 02 Javascript
jQuery 学习 几种常用方法
Jun 11 Javascript
JavaScript中Object和Function的关系小结
Sep 26 Javascript
js图片向右一张张滚动效果实例代码
Nov 23 Javascript
全面兼容的javascript时间格式化函数(比较实用)
May 14 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
Sep 27 Javascript
初步使用Node连接Mysql数据库
Mar 03 Javascript
Bootstrap表单组件教程详解
Apr 26 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
Feb 13 Javascript
jQuery操作DOM_动力节点Java学院整理
Jul 04 jQuery
jQuery 实现倒计时天,时,分,秒功能
Jul 31 jQuery
深入理解vue-class-component源码阅读
Feb 18 Javascript
jquery.validate.js插件使用经验记录
Jul 02 #Javascript
escape编码与unescape解码汉字出现乱码的解决方法
Jul 02 #Javascript
js获取IP地址的方法小结
Jul 01 #Javascript
jQuery截取指定长度字符串的实现原理及代码
Jul 01 #Javascript
原生js事件的添加和删除的封装
Jul 01 #Javascript
jQuery的:parent选择器定义和用法
Jul 01 #Javascript
jQuery 写的简单打字游戏可以提示正确和错误的次数
Jul 01 #Javascript
You might like
浅析PHP页面局部刷新功能的实现小结
2013/06/21 PHP
thinkphp配置连接数据库技巧
2014/12/02 PHP
浅谈PHP封装CURL
2019/03/06 PHP
js验证表单第二部分
2006/11/25 Javascript
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
2009/12/09 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
js 获取站点应用名的简单实例
2016/08/18 Javascript
JS仿京东移动端手指拨动切换轮播图效果
2020/04/10 Javascript
Angular实现响应式表单
2017/08/04 Javascript
bootstrap table sum总数量统计实现方法
2017/10/29 Javascript
JS实现select选中option触发事件操作示例
2018/07/13 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
使用typescript快速开发一个cli的实现示例
2020/12/09 Javascript
Python中集合类型(set)学习小结
2015/01/28 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
html5 button autofocus 属性介绍及应用
2013/01/04 HTML / CSS
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
瑞典最好的运动鞋专卖店:Sneakersnstuff
2016/08/29 全球购物
澳大利亚免息网上购物:Shop Zero
2016/09/17 全球购物
法国足球商店:Footcenter
2019/07/06 全球购物
德国W家官网,可直邮中国的母婴商城:Windeln.de
2021/03/03 全球购物
DBA的职责都有哪些
2012/05/16 面试题
实习求职信
2013/12/01 职场文书
个性大学生自我评价
2013/12/04 职场文书
试用期员工考核制度
2014/01/22 职场文书
幼儿园儿童节活动主持词+串词大全
2014/03/21 职场文书
优秀党员自我评价范文
2014/09/15 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
2015年商场工作总结
2015/04/27 职场文书
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript