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