se aplican dudas sobre javascript - memorización de funciones

Estoy luchando con un ejemplo de memoria js que se encuentra en un libro, aquí está el 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);
}

Aquí está unviolín con un ejemplo completo

lo que realmente no entiendo es cómo funciona este código y qué hace, en particular elapply parte:

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

Se y entiendo comoapply trabajos

El método apply () llama a una función con un valor dado y argumentos proporcionados como una matriz

suponer quethis._values[key] es igual aundefined, entonces el valor devuelto seráthis.apply(this, arguments): ¿este código vuelve a iniciar elmemoized ¿función? Intenté agregar algunos registros dentro de la función para ver cuántas veces se llama a la función, pero parece que se ha lanzado solo una vez.

¿Alguien puede darme una pista? Probablemente sea una pregunta falsa, por favor sea paciente, gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta