dúvidas sobre aplicação de javascript - memorização de funções

Estou lutando com um exemplo de memorização js encontrado em um livro, aqui está o código:

Function.prototype.memoized = function(key){
    this._values = this._values || {};
    return this._values[key] !== undefined ? this._values[key] : this._values[key] = this.apply(this, arguments);
}

aqui está umviolino com um exemplo completo

o que realmente não entendo é como esse pedaço de código funciona e o que faz, em particular oapply parte:

return this._values[key] !== undefined ? this._values[key] : this._values[key] = this.apply(this, arguments);

Eu sei e entendo comoapply trabalho

O método apply () chama uma função com um dado valor e argumentos fornecidos como uma matriz

Suponha quethis._values[key] é igual aundefined, o valor retornado seráthis.apply(this, arguments): esse código relança omemoized função? Eu tentei adicionar alguns logs dentro da função para ver quantas vezes a função é chamada, mas parece que foi lançada apenas uma vez ..

Alguém pode me dar uma dica? Provavelmente é uma pergunta idiota, por favor, seja paciente, obrigado

questionAnswers(2)

yourAnswerToTheQuestion