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

 更新时间:2014年07月02日 15:38:53   投稿:whsnow  
如何实现方法重载,涉及到三个问题:同名函数的调用、函数中特殊的参数arguments、如何利用arguments实现方法重载,需要的朋友可以参考下

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 { //其他的方法 
} 
}

相关文章

  • 微信小程序 slot踩坑的解决

    微信小程序 slot踩坑的解决

    这篇文章主要介绍了微信小程序 slot踩坑的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 微信小程序模板(template)使用详解

    微信小程序模板(template)使用详解

    这篇文章主要为大家详细介绍了微信小程序模板template使用的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • JavaScript Array对象详解

    JavaScript Array对象详解

    这篇文章主要为大家详细介绍了JavaScript function函数种类,知识点很全面,包括普通函数、匿名函数、闭包函数,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • 原生js实现轮播图特效

    原生js实现轮播图特效

    这篇文章主要为大家详细介绍了原生js实现轮播图特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • 小程序实现左滑删除效果

    小程序实现左滑删除效果

    这篇文章主要为大家详细介绍了小程序实现左滑删除效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • nuxtjs通过ecosystem.config.js配置pm2的方法

    nuxtjs通过ecosystem.config.js配置pm2的方法

    ecosystem.config.js 是一个特殊的配置文件,它允许您定义应用的各种属性,如脚本路径、环境变量、日志设置等,这篇文章主要介绍了nuxtjs通过ecosystem.config.js配置pm2的方法,需要的朋友可以参考下
    2024-03-03
  • 5款Javascript颜色选择器

    5款Javascript颜色选择器

    5款JavaScript颜色选择器(含jQuery插件)。
    2009-10-10
  • 全面了解javascript三元运算符

    全面了解javascript三元运算符

    下面小编就为大家带来一篇全面了解javascript三元运算符。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • js history对象简单实现返回和前进

    js history对象简单实现返回和前进

    返回和前进大家应该不陌生吧,浏览器上面的返回和前进按钮大家浏览网页时都会应到的,下面就为大家介绍下js中是如何实现所谓的返回和前进
    2013-10-10
  • 详解关闭令人抓狂的ESlint 语法检测配置方法

    详解关闭令人抓狂的ESlint 语法检测配置方法

    这篇文章主要介绍了详解关闭令人抓狂的ESlint 语法检测配置方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10

最新评论