JavaScript实现方法的重载


最近在使用node.js做后端时,想使用方法重载来实现一个函数可以接收不同的参数,但是javascript作为一个弱类型语言,无法实现方法的重载,就只能通过奇淫技巧来实现。

目前发现的方法有:

  • 使用arguments 参数的长度来判断传入参数的数量,从而实现不同业务逻辑
//使用arguments来实现方法重载
function OverLoad(name,age){
    //arguments.length===0说明没有传入参数
    switch(arguments.length){
        case 0:
           代码块
           break;
        //传入了name走这块
        case 1:
           代码块
           break;
        //传入了age走这块
        case 2:
           代码块
           break;
    }
}
  • 直接判断传入的参数是否为undefined

    function OverLoad(name,age){
        if(name===undefined){
    		//走这说明没有传参
            代码块
            return
        }
        if(age===undefined){
            //走这说明只传了一个参数
            代码块
            return
        }
        //走这说明只参数都传了
        代码块
    }

用上面几种方法都有大量的判断语句,没有很好的实现重载,网上还有些通过闭包来实现,但现在可以使用class中的#来实现属性的私有,这里就没有介绍闭包的方法了。


文章作者: LsWorld
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LsWorld !
评论
  目录