Skip to content

高阶函数动态创建缓存代理

javascript
const mult = (...args) => {
  let res = args[0]

  for (let i = 1, l = args.length; i < l; i++) {
    res *= args[i]
  }

  return res
}

const plus = (...args) => {
  let res = args[0]

  for (let i = 1, l = args.length; i < l; i++) {
    res += args[i]
  }

  return res
}

const createProxyFactory = function (fn) {
  const cache = {}

  return function (...args) {
    const key = args.join('|')
    return cache[key] || (cache[key] = fn(...args))
  }
}

const proxyMult = createProxyFactory(mult)
const proxyPlus = createProxyFactory(plus)

console.log(proxyMult(2, 3, 4))
console.log(proxyMult(2, 3, 4))
console.log(proxyPlus(2, 3, 4))
console.log(proxyPlus(2, 3, 4))