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');