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 相关文章推荐
推荐dojo学习笔记
Mar 24 Javascript
css值转换成数值请抛弃parseInt
Oct 24 Javascript
javascript表单验证使用示例(javascript验证邮箱)
Jan 07 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
Jun 22 Javascript
jQuery动态效果显示人物结构关系图的方法
May 07 Javascript
javascript之IE版本检测超简单方法
Aug 20 Javascript
深入理解AngularJS中的ng-bind-html指令和$sce服务
Sep 08 Javascript
bootstrap可编辑下拉框jquery.editable-select
Oct 12 jQuery
Vue中通过Vue.extend动态创建实例的方法
Aug 13 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
Sep 24 Javascript
vue 实现v-for循环回来的数据动态绑定id
Nov 07 Javascript
微信公众号服务器验证Token步骤图解
Dec 30 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
论建造顺序的重要性
2020/03/04 星际争霸
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
利用javascript/jquery对上传文件格式过滤的方法
2009/07/25 Javascript
一个简单的js鼠标划过切换效果
2010/06/30 Javascript
jQuery 1.5最新版本的改进细节分析
2011/01/19 Javascript
载入jQuery库的最佳方法详细说明及实现代码
2012/12/28 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
2016/05/15 Javascript
深入浅析jQuery对象$.html
2016/08/22 Javascript
JS实现图片垂直居中显示小结
2016/12/13 Javascript
关于Vue Webpack2单元测试示例详解
2017/08/14 Javascript
实例分析js事件循环机制
2017/12/13 Javascript
JS合并两个数组的3种方法详解
2019/10/24 Javascript
跟老齐学Python之变量和参数
2014/10/10 Python
Python读取键盘输入的2种方法
2015/06/16 Python
Python实现高效求解素数代码实例
2015/06/30 Python
Python字典简介以及用法详解
2016/11/15 Python
pygame游戏之旅 添加游戏介绍
2018/11/20 Python
python模糊图片过滤的方法
2018/12/14 Python
详解Python进阶之切片的误区与高级用法
2018/12/24 Python
python实现生成字符串大小写字母和数字的各种组合
2019/01/01 Python
Pytorch加载部分预训练模型的参数实例
2019/08/18 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
css3 transform 3d 使用css3创建动态3d立方体(html5实践)
2013/01/06 HTML / CSS
英国知名奢侈品包包品牌:Milli Millu
2016/12/22 全球购物
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
团员学习总结的自我评价范文
2013/10/14 职场文书
应届毕业生应聘自荐信
2013/12/07 职场文书
简历的自我评价
2014/02/03 职场文书
公司运动会策划方案
2014/05/25 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python
Python闭包的定义和使用方法
2022/04/11 Python
html中相对位置与绝对位置的具体使用
2022/05/15 HTML / CSS