function add(a, b) {
return a + b;
}
function add3(a,b,c){
return a+b+c;
}
let cacheArr = {}
function memoize(fn){
if(!(fn.name in cacheArr)){
cacheArr[fn.name] = {}
}
return function(...args){
let k = args.toString();
if(!(k in cacheArr[fn.name])){
cacheArr[fn.name][k] = fn(...args)
console.log('cache')
return cacheArr[fn.name][k]
}
return cacheArr[fn.name][k]
}
}
let memoizeAdd = memoize(add)
console.log(memoizeAdd(1,2))
console.log(memoizeAdd(1,2))
console.log(memoizeAdd(5,2))
let memoizeAdd3 = memoize(add3)
console.log(memoizeAdd3(1,2,3))
console.log(memoizeAdd3(1,2,3))
console.log(cacheArr)