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