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')