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);
      }
    }

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

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

  • 相关阅读:
    Chrome 开发者工具使用技巧
    POJ2485 Highways 【MST】
    Android 之UI自适应解决方式
    自己封装的轮播工具
    usb芯片调试经验
    SQLSEVER 中的那些键和约束
    mysql通过DATE_FORMAT将错误数据恢复
    vim使用(二):经常使用功能
    Linux系列-Xshell连接本地VMware安装的Linux虚拟机
    LeetCode 107 Binary Tree Level Order Traversal II(二叉树的层级顺序遍历2)(*)
  • 原文地址:https://www.cnblogs.com/wiggin-Z/p/11088579.html
Copyright © 2011-2022 走看看