【JS】【函数重载】
来源:互联网 发布:阿里云公网ip访问不了 编辑:程序博客网 时间:2024/06/07 10:56
java方法重载:
- 通过创建多个方法来实现,特点:1.相同方法名;2.形参不同;
JS函数重载:
- 通过创建一个方法来实现,特点:判断形参个数或类型,来设置不同处理方式
JS函数特点:
- 不限制形参个数和类型,多余形参则无视,缺少形参则用undefined代替
var dowork=function(pram1,pram2){ return pram1+','+pram2;}var res1=dowork('Armo');//Armo,undefinedvar res2=dowork('Armo','Armo2','Armo3');//Armo,Armo2
-出现多个函数名相同的函数,以最后一个为准,前面无效
var dowork=function(pram1,pram2){ //该方法无效 return pram1+','+pram2;}var dowork=function(pram1){ //该方法有效 return pram1;}var res1=dowork('Armo');//Armovar res2=dowork('Armo','Armo2');//Armo
arguments
-是一个伪数组对象,可以用argument[i]来访问给函数传递的参数
-argument.length表示传入的形参个数.
- 个数不同的重载
var dowork=function(){ if(arguments.length==1){ return 'hi!'+arguments[0] }else{ var str='hi!'; for(var i in arguments){ str+=arguments[i]; } return str; }}var res1=dowork('Armo');//hi!Armovar res2=dowork('Armo','Armo2');//hi!ArmoArmo2
- 类型不同的重载
var dowork=function(pram){ if(pram instanceof String|| typeof pram=='string'){return '字符串'} else if(pram instanceof Date){return '时间'} //由于 typeof (时间对象/数组对象) ==object 不用写 else if(pram instanceof Array){return '数组'} else if(pram instanceof Number|| typeof pram=='number'){return '数字'} else if(pram instanceof Function|| typeof pram=='function'){return '函数'}}var res1=dowork('Armo');//字符串var res2=dowork(1);//数字var res3=dowork(new Date());//时间var res4=dowork([1,2,3]);//数组var res5=dowork(function(){});//函数
阅读全文