Javascript 'this' sobrescribe en el combinador Z y todas las demás funciones recursivas

Fondo:

Tengo una función recursiva implementada por unCombinador z como se muestraaquí yaquí así que no hace uso dearguments.callee Ya que quedará en desuso en las próximas.ES6.

Problema

El principal problema con elCombinador z y todas las funciones anónimas recursivas que he visto hasta ahora es que las actualizaciones dethis valor al alcance de la función interna (el auto-devuelto en elreturn cláusula), por lo que elthis esa referencia al nivel superior se pierde, y quiero mantenerlo a través de todas las funciones internas.

¿Hay alguna manera de mantener el nivel superior?this sin pasarlo como un argumento de función adicional, ¿cuál es la forma más obvia de deshacerse de este problema pero no es tan limpio como quiero?

EDITAR:

En este momento resuelvo el problema pasando la parte superior.this referencia a laCombinador z Me gusta esto:

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

en la función recursiva, devuelvo la misma función al pasar este valor superior de esta manera:

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

Este es miCombinador z definición:

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

Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta