mervynyang
3/21/2017 - 1:33 AM

cacheProxyFactory

cacheProxyFactory

function cacheProxyFactory(fn) {
  var cache = {}
  return function() {
    var args = [].join.call(arguments, ',')
    if (args in cache) {
      return cache[args]
    }
    return cache[args] = fn.apply(this, arguments)
  }
}

function mult() {
  console.log('开始计算乘积')
  var a = 1
  for (var i = 0, l = arguments.length; i < l; i++) {
    a = a * arguments[i]
  }
  return a
}

// 缓存每次计算的乘积
var proxyMult = cacheProxyFactory(mult)

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