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