代码实现


/**
 *
 *
 * @param func 需要缓存化的函数
 * @returns 返回缓存化后的函数
 */
function memoize (fn) {
  function func () {
    var argsJson = JSON.stringify(arguments)
    var resultMap = func.resultMap
    if (resultMap[argsJson]) return resultMap[argsJson]
    resultMap[argsJson] = fn.apply(this, arguments)
    return resultMap[argsJson]
  }
  func.resultMap = {}
  return func
}

使用方法


function add (number1, number2) {
  // 参数一样的时候,函数只会执行一次,并将结果缓存起来。
  return number1 + number2
}

var add = memoize(add) // 加工函数

add(1, 2)