function prefix(initFn, mainFn) { return function(){ var func = initFn; initFn = mainFn; return func.apply(this, arguments); } } function add(a, b){ return a + b; } function multiply(a, b){ return a * b; } var addThenMultiply = prefix(add, multiply); console.log(addThenMultiply(2, 3)); // => 5 console.log(addThenMultiply(2, 3)); // => 6 console.log(addThenMultiply(2, 3)); // => 6