SOURCE

/**
* 缓存代理
*/
const mult = (...arg) => {
  let res = 1;
  for(let i = 0, l = arg.length; i < l; i++) {
    res = arg[i] * res;
  }
  return res;
}

const plus = (...arg) => {
  let res = 0;
  for(let i = 0, l = arg.length; i < l; i++){
    res = arg[i] + res;
  }
  return res;
}

const proxyFactry = (fn) => {
  let cache = {};
  return (...arg) => {
    let key = Array.prototype.join.call(arg, ',');
    if(cache[key]) {
      return cache[key]
    }
   return cache[key] = fn.apply(this, arg)
  }
}

const proxyPlus = proxyFactry(plus);
const proxyMult = proxyFactry(mult);

console.log(proxyPlus(1,2,3));
console.log(proxyPlus(1,2,3));
console.log(proxyMult(1,2,3));
console.log(proxyMult(1,2,3));





console 命令行工具 X clear

                    
>
console