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 相关文章推荐
javascript 树形导航菜单实例代码
Aug 13 Javascript
js获取本机操作系统类型的两种方法
Dec 19 Javascript
javascript动态添加checkbox复选框的方法
Dec 23 Javascript
jquery mobile开发常见问题分析
Jan 21 Javascript
详谈js模块化规范
Jul 07 Javascript
解决angular2 获取到的数据无法实时更新的问题
Aug 31 Javascript
QRCode.js二维码生成并能长按识别
Oct 16 Javascript
AngularJS上传文件的示例代码
Nov 10 Javascript
详解vue中移动端自适应方案
May 05 Javascript
vue动态注册组件实例代码详解
May 30 Javascript
微信小程序中如何计算距离某个节日还有多少天
Jul 15 Javascript
Vue+ElementUI 中级联选择器Bug问题的解决
Jul 31 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入门速成(2)
2006/10/09 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
PHP生成指定随机字符串的简单实现方法
2015/04/01 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
jquery插件之easing 动态菜单
2010/08/21 Javascript
javascript 主动派发事件总结
2011/08/09 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
js正则表达式中exec用法实例
2015/07/23 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
2016/01/26 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
2017/07/05 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
vue.js实现插入数值与表达式的方法分析
2018/07/06 Javascript
Angular路由ui-router配置详解
2018/08/01 Javascript
使用FormData实现上传多个文件
2018/12/04 Javascript
微信小程序实现语音识别转文字功能及遇到的坑
2019/08/02 Javascript
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
2020/04/25 Javascript
JavaScript实现滑块验证解锁
2021/01/07 Javascript
Python标准库之循环器(itertools)介绍
2014/11/25 Python
利用python循环创建多个文件的方法
2018/10/25 Python
创建Django项目图文实例详解
2019/06/06 Python
python 环境搭建 及python-3.4.4的下载和安装过程
2019/07/20 Python
Python 利用argparse模块实现脚本命令行参数解析
2020/12/28 Python
深入探究HTML5的History API
2015/07/09 HTML / CSS
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
加拿大床上用品、家居装饰、厨房和浴室产品购物网站:Linen Chest
2018/06/05 全球购物
DJI大疆德国官方商城:大疆无人机
2018/09/01 全球购物
中间件的定义
2016/08/09 面试题
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
2014年药房工作总结
2014/11/22 职场文书
义卖募捐活动总结
2015/05/09 职场文书
Python天气语音播报小助手
2021/09/25 Python
Golang流模式之grpc的四种数据流
2022/04/13 Golang