Javascript Function Overloading

use closures to create basic function overloading with js

by nickadeemus2002

JavaScript

function addMethod(obj, name, fn){
    var old = obj[name];
    obj[name] = function(){
        if(fn.length === arguments.length){
           return fn.apply(this, arguments);
        }else if(typeof old === 'function'){
            return old.apply(this, arguments);
        }
    };
}

var myObj = {}
addMethod(myObj, 'objMethod', function m1(){console.log('no arguments');});
addMethod(myObj, 'objMethod', function m2(a){console.log('1 argument');});
addMethod(myObj, 'objMethod', function m3(a,b){console.log('2 arguments');});

var a,b;
myObj.objMethod(a);

console.log(myObj);