Function.prototype.extend

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"