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

 

posted @ 2026-01-22 17:27  howhy  阅读(2)  评论(0)    收藏  举报