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

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

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

最新文章

  1. T-Sql(八)字段索引和数据加密
  2. MYSQL单双向同步
  3. 关于当一个C#工程移植到另一台机子上(win7)上时,程序报错。dll没有被指定在Windows上运行,或者它包含错误。请尝试使用原始安装媒体重新安装程序。。。。。。
  4. 传智播客JavaWeb day05-session、url重写
  5. ytu 1304:串的简单处理(水题)
  6. ajax对服务器路径请求
  7. Thawte SSL123 SSL证书-中国证书.com
  8. HADOOP与ORACLE关联
  9. windows环境下使用virtualenv对python进行多版本隔离
  10. C#神器 委托 + Unity神器 协程
  11. jquery对append进的元素的监听操作
  12. 【洛谷P4145】花神游历各国
  13. Docker架构图
  14. 【转】浮点数与IEEE 754
  15. uml建模工具介绍
  16. array(1) { [0]=> int(5) }和array(1) { [0]=> string(1) "5" }
  17. [GCJ2017R2]Fresh Chocolate
  18. git 转移
  19. JSP接口浅析
  20. 6.安装和配置OpenStack图片服务组件

热门文章

  1. 20140923 cin.get() getline cin
  2. JPA派生标识符2
  3. Java-技术专区-问题专区-应该了解的基础技术点
  4. UML各种线的含义
  5. js中三元运算符的两种情况
  6. imagepicker插件的使用方法和选择按钮汉化
  7. 【JDK1.8】Java 栈实现方式
  8. Java的安全性如何理解
  9. element 点击切换按钮的颜色
  10. 【转】前后端分离架构:web实现前后端分离,前后端解耦