JSFiddle - React, Tailwind, and code Playground
JavaScript
var Calculator = function () {}
Calculator.prototype.Add = function (a, b) {
console.log("Adding a+b");
return a+b;
}
var SuperCalculator = function () {}
SuperCalculator.prototype = new Calculator();
SuperCalculator.prototype.Delete = function (a, b) {
console.log("Deleting a-b");
return a-b;
}
function createInterceptor (key, context, originalFunc, preFunc, postFunc) {
var interceptor = function () {
preFunc();
var result = originalFunc.apply(context, arguments);
postFunc();
return result;
}
return interceptor;
}
var mySuperCalculator = new SuperCalculator();
var preFunc = function () { console.log("Pre func fired"); }
var postFunc = function () { console.log("Post func fired"); }
for(var key in mySuperCalculator) {
mySuperCalculator[key] = createInterceptor(key, mySuperCalculator, mySuperCalculator[key], preFunc, postFunc);
}
var addResult = mySuperCalculator.Add(1, 2);
console.log("AddResult: " + addResult);
var deleteResult = mySuperCalculator.Delete(2,1);
console.log("DeleteResult: " + deleteResult);