fn.length , fn. arguments.length ? ?
. arguments - , . , .
, :
10 , , 10- , "" ?
addMethod :
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);
};
}
, addMethod fn old. , , , old.
addMethod(ninja,'whatever',function(){ });
addMethod(ninja,'whatever',function(a){ });
addMethod(ninja,'whatever',function(a,b){ });
addMethod ninja.whatever , # 3, , old ( # 2), # 3 .
, :
function #3 (a,b)
function #2 (a)
function #1 ()
old .
, , ninja.whatever(). " " .
- ,
whatever, # 3. β3, fn.length != arguments.length .. old ( # 2). - , # 2. , # 2,
fn.length != arguments.length old ( # 1) . - , # 1.
fn.length == arguments.length , , .