拜读js忍者修炼一书 读到关于js函数重载内容这个模块app
主要是介绍经过js的访问argument这个参数来实现js函数的重载函数
经过在函数内部进行判断js argument参数的长度this
代码以下所示spa
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... } } }
可是这种实现方式不够忍者,不够简洁code
做者给了咱们一种更加牛逼的实现方式,在调用的时候添加函数逻辑blog
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); }
}
上述代码是在针对添加方法的重载it
在文章的最后感谢做者根据本身的多年开发经验写出了这么一本好书,为个人进阶之路提供了诸多指导,感谢这些大方不自私的人 惭愧io