关于js 重载
2024-10-07 19:10:59
拜读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);
}
}
上述代码是在针对添加方法的重载
在文章的最后感谢作者根据自己的多年开发经验写出了这么一本好书,为我的进阶之路提供了诸多指导,感谢这些大方不自私的人 惭愧
最新文章
- T-Sql(八)字段索引和数据加密
- MYSQL单双向同步
- 关于当一个C#工程移植到另一台机子上(win7)上时,程序报错。dll没有被指定在Windows上运行,或者它包含错误。请尝试使用原始安装媒体重新安装程序。。。。。。
- 传智播客JavaWeb day05-session、url重写
- ytu 1304:串的简单处理(水题)
- ajax对服务器路径请求
- Thawte SSL123 SSL证书-中国证书.com
- HADOOP与ORACLE关联
- windows环境下使用virtualenv对python进行多版本隔离
- C#神器 委托 + Unity神器 协程
- jquery对append进的元素的监听操作
- 【洛谷P4145】花神游历各国
- Docker架构图
- 【转】浮点数与IEEE 754
- uml建模工具介绍
- array(1) { [0]=>; int(5) }和array(1) { [0]=>; string(1) ";5"; }
- [GCJ2017R2]Fresh Chocolate
- git 转移
- JSP接口浅析
- 6.安装和配置OpenStack图片服务组件