javascript中书上的介绍说是没有重载的,实际上利用闭包是可以用重载的。
添加find的方法的重载。
addMethod(people, "find",function() {});/*不传参*/
addMethod(people, "find",function(a) {});/*传一个*/
addMethod(people, "find",function(a, b) {});/*传两个*/
function addMethod(object, name, fn) {
var old = object[name];//把之前添加的方法存在一个临时变量old里面
object[name] =function() {// 重写了object[name]的方法
//fn.length表示函数参数的个数,函数的预计参数和实际传入参数个数相等。则调用方法
if(fn.length === arguments.length) {
return fn.apply(this, arguments);
// 否则,判断old是否是函数,如果是,就调用old
}elseif(typeof old === "function") {
return old.apply(this, arguments);
}
}
}
网友评论