Estoy trabajando en una plataforma de migración para migrar aplicaciones web de un dispositivo a otro. Lo extiendo para agregar el soporte para preservar el estado de JavaScript. Mi tarea principal es crear un archivo que represente el estado actual de la aplicación en ejecución, transmitirlo a otro dispositivo y volver a cargar el estado en el dispositivo de destino.¿Cómo conservar el estado del cierre de JavaScript?
La solución básica adopté es navegar por el objeto de la ventana y para guardar todas sus propiedades descendientes usando JSON como formato de base para la exportación, y se amplía para implementar algunas de las características:
- preservando referencia de objeto, incluso si cíclica (dojox.json.ref biblioteca)
- soporte para temporizadores
- Fecha
- no numericproperties de arrays
- referencia a DOM elementos
La tarea más importante de que necesito resolver ahora es la exportación de cierres. En este momento, no sabía cómo implementar esta función. Leí sobre la propiedad interna EcmaScript [[scope]]
que contiene la cadena de alcance de una función, un objeto similar a una lista compuesto por todo el contexto de activación anidado de la función. Desafortunadamente, no es accesible por JavaScript. ¿Alguien sabe si hay una manera de acceder directamente a la propiedad [[scope]]
? ¿O otra forma de preservar el estado de un cierre?
No, no hay una forma estándar de acceder al '[[Ámbito]]' actual, la única implementación que proporciona una forma para esto es Rhino, a través de su propiedad '__parent__', p. 'var scope = function() {} .__ parent __;' – CMS
¿La propiedad '__parent__' de Rhino es la misma proporcionada por Firebug? –