Como o sublinhado memoize é implementado em javascript

Estou desenvolvendo minha própria biblioteca de programação funcional e agora consultando ounderscore.

memorizar _.memoize (função, [hashFunction])

Memoriza uma determinada função armazenando em cache o resultado calculado. Útil para acelerar cálculos de execução lenta. Se aprovada uma hashFunction opcional, ela será usada para calcular a chave de hash para armazenar o resultado, com base nos argumentos da função original. O hashFunction padrão apenas usa o primeiro argumento para a função memorizada como a chave.

var fibonacci = _.memoize(function(n) {
  return n < 2 ? n: fibonacci(n - 1) + fibonacci(n - 2);
});

O código acima que permite a memorização automática sem lidararray parece meio mágico, e eu vi o código-fonte abaixo, mas ainda assim o design interno não está claro para mim.

 // Memoize an expensive function by storing its results.
  _.memoize = function(func, hasher) {
    var memoize = function(key) {
      var cache = memoize.cache;
      var address = hasher ? hasher.apply(this, arguments) : key;
      if (!_.has(cache, address)) cache[address] = func.apply(this, arguments);
      return cache[key];
    };
    memoize.cache = {};
    return memoize;
  };

Alguém pode me dar uma breve idéia do que está acontecendo?

Estimado.

questionAnswers(1)

yourAnswerToTheQuestion