I needed a way of adding some extra functionality to some existing functions but without wanting to touch the original functions’ code, essentially joining functions together.
This is what joint.js does.
I ended up making two versions, one for joining more than 2 functions which has more of an overhead, and a simpler one for just joining only two functions.
First include the joint function in your script
function joint(a){var b;return b=a[a.length-1],a.pop(),a=a.length>1?joint(a):a[0],function(){b.apply(new a)}}
Then use it like this;
// My original function that I want to extend function my_func() { console.log( "Original functionality." ); } // Function with the new functionality function new_func() { console.log( "New functionality." ); } // Add the functionality of new_func to my_func by joining functions my_func = joint([ my_func, new_func ]); // Now run the original function with the new functionality my_func(); /* CONSOLE OUTPUT: > Original functionality. > New functionality. */
You can download the source on my GitHub here: https://github.com/Dayjo/joint/ or take a look at it working on JSBin
Alternatively you can see this post on coderwall.com here; https://coderwall.com/p/j-cega