Puedo crear una función recursiva en una variable así:
/* Count down to 0 recursively.
*/
var functionHolder = function (counter) {
output(counter);
if (counter > 0) {
functionHolder(counter-1);
}
}
Con esto, functionHolder(3);saldría 3 2 1 0. Digamos que hice lo siguiente:
var copyFunction = functionHolder;
copyFunction(3);saldría 3 2 1 0como arriba. Si luego cambié de la functionHoldersiguiente manera:
functionHolder = function(whatever) {
output("Stop counting!");
Entonces functionHolder(3);daría Stop counting!, como se esperaba.
copyFunction(3);ahora da lo 3 Stop counting!que se refiere functionHolder, no la función (a la que él mismo apunta). Esto podría ser deseable en algunas circunstancias, pero ¿hay alguna forma de escribir la función para que se llame a sí misma en lugar de a la variable que la contiene?
Es decir, ¿es posible cambiar solo la línea functionHolder(counter-1);para que seguir todos estos pasos aún dé 3 2 1 0cuando llamemos copyFunction(3);? Lo intenté this(counter-1);pero eso me da el error this is not a function.