я вчера было уже хотел выложить вариант с двумя массивами, но вариант
nerv_ c cache[stamp] дал понять, где настоящий скил
в качестве отработки при помощи FineReader-a извлёк код
nerv_ (шутка
)
function f(a, b, c) {
return a * b + c;
};
function cacheFn(fn) {
var cache = {};
return function () {
var stamp = JSON.stringify(arguments);
console.log(cache);
if (!(stamp in cache)) {
cache[stamp] = fn.apply(this, arguments);
console.log("call: " + cache[stamp]);
}
console.log("cache: " + cache[stamp] + "\n\n");
return cache[stamp];
}
}
var cacheF = cacheFn(f);
cacheF(2, 2, "asdf");
cacheF(2, 2, "asdf");
cacheF(2, 3, "asdf");
cacheF(2, 3, "asdf");