Obejct.overload

JavaScript

(function() {

    function createOverload(arr) {
        return function() {
            var list =arr, len = arguments.length, i, l;
            for (i = 0, l = list.length; i < l; i++) {
                if (list[i].length == len) return (list[i].apply(this, arguments));
            }
            return this;
        }
    }

    Object.overload = function(obj, name, fn) {
        var args = [];
        switch (typeOf(fn)) {
        case 'function':
            args = [fn];
            break;
        default:
            args = fn;
        }
        if (name in obj) args.unshift(obj[name]);

        obj[name] = createOverload(args);
    };

})();

//example:

var params = {};
Object.overload(params,'a',[
    function(a){console.log(a);}
    , function(a,b){console.log(a,b);}
]);

var cls = new Class(params);

var a = new cls;
a.a('a');
a.a('a','b');