Javascript 'this' перезаписывает в Z комбинатор и любую другую рекурсивную функцию

Фон:

У меня есть рекурсивная функция, реализованнаяZ-комбинатор как показаноВот а такжеВот поэтому он не используетarguments.callee так как это будет устаревшим в предстоящемES6.

вопрос

Основная проблема сZ-комбинатор и все рекурсивные анонимные функции, которые я видел до сих пор, заключаются в том, что они обновляют деthis значение для внутренней области видимости функции (самоотдача вreturn пункт), поэтомуthis который ссылается на верхний уровень, потерян, и я хочу поддерживать его через все внутренние функции.

Есть ли способ поддерживать верхний уровеньthis без передачи его в качестве дополнительного аргумента функции, который является наиболее очевидным способом избавления от этой проблемы, но не так чист, как я хочу?

РЕДАКТИРОВАТЬ:

Прямо сейчас я решаю проблему, передавая вершинуthis ссылка наZ-комбинатор нравится:

Co.Utilities.Z(this.createHTMLFromLOM)(this.LOM, this);

в рекурсивной функции я возвращаю ту же функцию, передавая top это значение следующим образом:

function createHTMLFromLOM(callee:any, LOM_section:LOM, self:any):void {
    /* Some other code. */
    return callee(LOM_section.children[widget], self);
}

Это моеZ-комбинатор определение:

function Z(func:any):any {
        var f = function () {
            return func.apply(null, [f].concat([].slice.apply(arguments)));
        };
         return f;
    }

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос