在《javascript忍者秘籍》上看到一段代碼,用于函數(shù)重載。function addMethod(object, name, fn) { var old = object[name]; //#1
object[name] = function(){ if (fn.length == arguments.length) //#2
return fn.apply(this, arguments) //#2
else if (typeof old == 'function') //#3
return old.apply(this, arguments); //#3
};
}示例是這樣的: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*/});但是有點(diǎn)看不懂a(chǎn)ddMethod方法,疑問如下:if (fn.length == arguments.length)這個arguments是誰的arugments?調(diào)用addMethod時的?還是object[name] = function()這個匿名函數(shù)?菜鳥一枚,若拍磚請輕拍
關(guān)于函數(shù)重載的問題
開心每一天1111
2018-09-11 09:34:52