zoukankan      html  css  js  c++  java
  • 关于js 重载

    拜读js忍者修炼一书 读到关于js函数重载内容这个模块

      主要是介绍通过js的访问argument这个参数来实现js函数的重载

      通过在函数内部进行判断js argument参数的长度

       代码如下所示

    var ninja = {
      whatever: function(){
        switch(arguments.length){
        case 0:
          /* do something */
        break;
        case 1:
          /* do something else */
        case 2:
          /* do yet something else */
        break;
        // and so on...
        }
      }
    }

    但是这种实现方式不够忍者,不够简洁

    作者给了我们一种更加牛逼的实现方式,在调用的时候添加函数逻辑

    var ninja = {}
    addMethod(ninja, ‘whatever’, function(){/* do something */});
    addMethod(ninja, ‘whatever’, function(a){/* do something else */});
    addMethod(ninja, ‘whatever’, function(a,b){/* yet something else */});

    现在问题的关键就在于如何实现addMethod这个函数了

    //Listing 4.15 A method overloading function
    function addMethod(object, name, fn){
      var old = object[name];
      object[name] = function(){
      if (fn.length == arguments.length)
        return fn.apply(this, arguments)
      else if (typeof old == 'function')
        return old.apply(this, arguments);
      }
    }

    上述代码是在针对添加方法的重载

    在文章的最后感谢作者根据自己的多年开发经验写出了这么一本好书,为我的进阶之路提供了诸多指导,感谢这些大方不自私的人 惭愧

  • 相关阅读:
    centos6安装部署ntp
    pttablechecksum和pttablesync修复主从不一致的数据
    clickhouse数据导入导出
    mongodb执行js结果输出文件
    rman验证备份有效性
    使用expdp和impdp进行goldengate初始化
    安装goldengate软件(ogg)
    sql ltrim rtrim
    2022
    Mqtt服务部署
  • 原文地址:https://www.cnblogs.com/wiggin-Z/p/11088579.html
Copyright © 2011-2022 走看看