ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

js 方法重载

js 方法重载
function addMethod(obj,name,fun){const old=obj[name];obj[name]=function(...args){if(args.length===fun.length){return fun.apply(this,args);}else if(typeof old==='function'){return old.apply(this,args)}}
}
const obj={}addMethod(obj,'getuser',()=>console.log('getuser'))
addMethod(obj,'getuser',(name)=>console.log('getuser name'))
obj.getuser()
obj.getuser('aaa')function methodOverLoad(){const result={};const overload=function(...args){const argsTypes=args.map(item=>typeof item).join("-")result[argsTypes].apply(this,args);}overload.addImpl=function(...args){const fun=args.pop();if(typeof fun!=='function'){return;}const args1=args.join("-");result[args1]=fun;}return overload;
}
const overload=methodOverLoad()
overload.addImpl('number',(num)=>{console.log('number '+num)});
overload.addImpl('string',(str)=>{console.log('number '+str)});
overload.addImpl('number','string',(num,str)=>{console.log('number '+num+'-----'+str)});
overload(23433);
overload("aabbcc");
overload(5555,'9999')

 

返回列表