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中的isXX系列是否继续使用的分析
Apr 16 Javascript
javascript温习的一些笔记 基础常用知识小结
Jun 22 Javascript
解析js原生方法创建表格效率测试
Jul 08 Javascript
jquery中的过滤操作详细解析
Dec 02 Javascript
详解Javascript模板引擎mustache.js
Jan 20 Javascript
JavaScript中的ParseInt(&quot;08&quot;)和“09”返回0的原因分析及解决办法
May 19 Javascript
BootStrap轻松实现微信页面开发代码分享
Oct 21 Javascript
JS实现页面跳转参数不丢失的方法
Nov 28 Javascript
jQueryUI Sortable 应用Demo(分享)
Sep 07 jQuery
JavaScript requestAnimationFrame动画详解
Sep 14 Javascript
CryptoJS中AES实现前后端通用加解密技术
Dec 18 Javascript
如何阻止移动端浏览器点击图片浏览
Aug 29 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
在PWS上安装PHP4.0正式版
2006/10/09 PHP
深入了解PHP类Class的概念
2012/06/14 PHP
在Debian系统下配置LNMP的教程
2015/07/09 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
基于jquery创建的一个图片、视频缓冲的效果样式插件
2012/08/28 Javascript
js判断输入是否为数字的具体实例
2013/08/03 Javascript
JavaScript实现url地址自动检测并添加URL链接示例代码
2013/11/12 Javascript
jQuery实现表格行上移下移和置顶的方法
2015/05/22 Javascript
在javascript中创建对象的各种模式解析
2016/05/16 Javascript
AngularJS基础 ng-click 指令示例代码
2016/08/01 Javascript
Vue.js实战之组件的进阶
2017/04/04 Javascript
node中使用es5/6以及支持性与性能对比
2017/08/11 Javascript
vue-rx的初步使用教程
2018/09/21 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
一次Webpack配置文件的分离实战记录
2018/11/30 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
Python入门篇之文件
2014/10/20 Python
关于Python中空格字符串处理的技巧总结
2017/08/10 Python
Python程序员面试题 你必须提前准备!
2018/01/16 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
Python 实现黑客帝国中的字符雨的示例代码
2020/02/20 Python
Pycharm自带Git实现版本管理的方法步骤
2020/09/18 Python
python tqdm库的使用
2020/11/30 Python
使用phonegap获取位置信息的实现方法
2017/03/31 HTML / CSS
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
应用电子专业学生的自我评价
2013/10/16 职场文书
考博专家推荐信模板
2013/12/02 职场文书
经理管理专业自荐信范文
2013/12/31 职场文书
大学英语演讲稿范文
2014/04/24 职场文书
询价采购方案
2014/06/09 职场文书
化学教育专业求职信
2014/07/08 职场文书
尼克胡哲观后感
2015/06/08 职场文书
mysql优化
2021/04/06 MySQL
浅谈Python协程asyncio
2021/06/20 Python