JSFiddle - React, Tailwind, and code Playground
by willseitz
JavaScript
function CacheObject() {
var self = this;
self.nameCounter = 0;
self.data = {};
self.cacheFn = function(fn) {
var cacheObject = self;
var name = cacheObject.makeName();
return function() {
if (cacheObject.data[name] == undefined) {
var cacheMe = fn();
cacheObject.data[name] = cacheMe;
}
return cacheObject.data[name];
}
};
self.makeName = function() {
return self.nameCounter++;
};
self.clearCache = function() {
self.data = {};
};
}
var cachedThree
function gimmeThree() {
console.log("RUNNING ---- three");
return 3;
}
function gimmeObject() {
console.log("RUNNING ---- object");
return { foo: 6, bar: "hey" };
}
function gimmeFive() {
console.log("RUNNING ---- five");
return "five";
}
var myCacher = new CacheObject();
gimmeThree = myCacher.cacheFn(gimmeThree);
gimmeObject = myCacher.cacheFn(gimmeObject);
var cacher2 = new CacheObject();
gimmeFive = cacher2.cacheFn(gimmeFive);
console.log(gimmeThree());
console.log(gimmeObject());
console.log(gimmeFive());
console.log(gimmeThree());
console.log(gimmeObject());
console.log(gimmeFive());
console.log(gimmeThree());
console.log(gimmeObject());
console.log(gimmeFive());
console.log(gimmeThree());
console.log(gimmeObject());
console.log(gimmeFive());
myCacher.clearCache();
console.log(gimmeThree());
console.log(gimmeObject());
console.log(gimmeFive());
console.log(gimmeThree());
console.log(gimmeObject());
console.log(gimmeFive());
console.log(gimmeThree());
console.log(gimmeObject());
console.log(gimmeFive());
console.log(gimmeThree());
console.log(gimmeObject());
console.log(gimmeFive());