Я могу создать рекурсивную функцию в переменной следующим образом:
/* Count down to 0 recursively.
 */
var functionHolder = function (counter) {
    output(counter);
    if (counter > 0) {
        functionHolder(counter-1);
    }
}
При этом functionHolder(3); выводит 3 2 1 0. Скажем, я сделал следующее:
var copyFunction = functionHolder;
 copyFunction(3); выводит 3 2 1 0, как указано выше. Если бы я затем изменил functionHolder следующим образом:
functionHolder = function(whatever) {
    output("Stop counting!");
Тогда functionHolder(3); даст Stop counting!, как и ожидалось.
 copyFunction(3); теперь дает 3 Stop counting!, поскольку он относится к functionHolder, а не к функции (на которую она указывает). Это может быть желательно в некоторых случаях, но есть ли способ написать функцию так, чтобы она вызывала себя, а не переменную, которая ее удерживает?
То есть, возможно ли изменить  только строку functionHolder(counter-1);, так что, проходя все эти шаги, все равно дает 3 2 1 0, когда мы вызываем copyFunction(3);? Я пробовал this(counter-1);, но это дает мне ошибку this is not a function.
