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