JSFiddle - React, Tailwind, and code Playground
JavaScript
function addMethod(object, name, fn) {
var old = object[name];
var len = fn.length;
object[name] = function(){
if (fn.length == arguments.length) {
console.log('--------MATCH-----------------------');
console.log('args length: ' + arguments.length + ' ----- func length: ' + fn.length);
console.log(arguments);
return fn()
}
else if (typeof old == 'function') {
console.log('--------NO MATCH-----------------------');
console.log('args length: ' + arguments.length + ' ----- func length: ' + fn.length);
console.log(arguments);
return old.apply(this, arguments);
}
};
}
var ninja = {}
debugger;
addMethod(ninja, 'test', function() { console.log('no params');});
addMethod(ninja, 'test', function(a) { console.log('1 params');});
addMethod(ninja, 'test', function(a, b) {console.log('2 params');});
addMethod(ninja, 'test', function(a, b, c) {console.log('3 params');});
addMethod(ninja, 'test', function(a, b, c, d) {console.log('4 params');});
ninja.test();
ninja.test('a');
ninja.test('b', 'c');
ninja.test('b', 'c', 'd');
ninja.test('b', 'c', 'd', 'e');