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 相关文章推荐
一组JS创建和操作表格的函数集合
May 07 Javascript
JQuery实现用户名无刷新验证的小例子
Mar 22 Javascript
jQuery点击弹出下拉菜单的小例子
Aug 01 Javascript
解决Extjs4中form表单提交后无法进入success函数问题
Nov 26 Javascript
使用jquery插件qrcode生成二维码
Oct 22 Javascript
jQuery焦点图插件SaySlide
Dec 21 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
May 17 Javascript
ion content 滚动到底部会遮住一部分视图的快速解决方法
Sep 06 Javascript
Angular2 多级注入器详解及实例
Oct 30 Javascript
详解javascript 正则表达式之分组与前瞻匹配
May 30 Javascript
基于Layui自定义模块的使用方法详解
Sep 14 Javascript
使用typescript快速开发一个cli的实现示例
Dec 09 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之数组学习
2011/05/29 PHP
关于zend studio 出现乱码问题的总结
2013/06/23 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
jQuery中验证表单提交方式及序列化表单内容的实现
2014/01/06 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
使用命令对象代替switch语句的写法示例
2015/02/28 Javascript
Javascript中的return作用及javascript return关键字用法详解
2015/11/05 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
基于AngularJS实现iOS8自带的计算器
2016/09/12 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
小程序视频列表中视频的播放与停止的示例代码
2018/07/20 Javascript
微信jssdk逻辑在vue中的运用详解
2018/11/14 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
python获取网页状态码示例
2014/03/30 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
python求解水仙花数的方法
2015/05/11 Python
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
Python打印输出数组中全部元素
2018/03/13 Python
Python实现全排列的打印
2018/08/18 Python
在交互式环境中执行Python程序过程详解
2019/07/12 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
matplotlib交互式数据光标mpldatacursor的实现
2021/02/03 Python
攀岩、滑雪、徒步旅行装备:Black Diamond Equipment
2019/08/16 全球购物
求高于平均分的学生学号及成绩
2016/09/01 面试题
自我评价优秀范文分享
2013/11/30 职场文书
2013年军训通讯稿
2014/02/05 职场文书
《童趣》教学反思
2014/02/19 职场文书
餐饮采购员岗位职责
2014/03/15 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
财务部会计岗位职责
2015/02/03 职场文书
2015小学师德工作总结
2015/07/21 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书
广告文案的撰写技巧(实用干货)
2019/08/23 职场文书
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL