源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-05-22 08:50 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:js面向对象编程之如何实现方法重载
js中如何实现方法重载?这涉及到三个问题 1.同名函数的调用问题 2.函数中特殊的参数arguments 3.如何利用arguments实现方法重载 [b]1、同名函数的调用问题[/b] 都知道在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),并没有因为我们传递了一个参数,而调用只有一个参数的方法。 [b]2、函数中特殊的参数arguments[/b] 如果我们使用如下的代码
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代表了实际传递给函数参数的个数。 [b]3、如何在js中实现函数的重载?[/b] 经过以上的测试发现,在js中不能直接实现函数的重载,但有没有办法实现类似重载效果的方法呢? 可以,主要就是利用arguments 例如:
function test1() 
{ 
var text=""; 
if(arguments.length==1) 
{ 
//调用一个参数的方法 
} 
else if(arguments.length==2) 
{ 
//调用两个参数的方法 
} 
else { //其他的方法 
} 
}
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部