var ninja = {};
addMethod(ninja,'whatever',function(a){console.log(arguments.length);});
addMethod(ninja,'whatever',function(a,b){console.log(arguments.length);});
addMethod(ninja,'whatever',function(){console.log(arguments.length);});
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);
};
}
ninja.whatever();
addMethod(ninja,'whatever',function(a){console.log(arguments.length);});
addMethod(ninja,'whatever',function(a,b){console.log(arguments.length);});
addMethod(ninja,'whatever',function(){console.log(arguments.length);});
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);
};
}
ninja.whatever();