Function.prototype.extend = function() {
var fns = [this].concat([].slice.call(arguments));
return function() {
for (var i=0; i<fns.length; i++) {
fns[i].apply(this, arguments);
}
};
};
// Usage:
var a = function(){ console.log('a'); };
var b = function(){ console.log('b'); };
var c = function(){ console.log('c'); };
var d = a.extend(b,c,function(){ console.log('d'); });
d(); //=> "a".."b".."c".."d"