una ubicar significado saber referencias referencia permitir hay eliminar donde detectar cómo como circulares buscar javascript json serialization storage circular-reference

javascript - ubicar - ¿Cómo guardar un objeto con referencias circulares?



referencia circular excel significado (2)

Quiero guardar localmente un objeto que tenga referencias circulares. ¿Cuáles son mis opciones?

Lo primero que pensé fue en el uso del almacenamiento local HTML5, pero no puedo hacer una cadena de este objeto debido a las referencias circulares.

Específicamente, estoy tratando de guardar el objeto DOMSelection de la selección actual.

Ejemplo:

var sel = window.getSelection(); var selstring = JSON.stringify(sel); // Breaks here ... localStorage.setItem("selection",selstring);

La única forma en que podría hacer que el stringify funcione ahora es ignorando ciertos objetos como ese:

var selstring = JSON.stringify(sel,function(k,v){ if( k=="anchorNode" || k=="baseNode" || k=="extentNode" || k=="focusNode") return undefined; return v; });

Pero esto me deja con un objeto DOMSelection bastante vacío que no es suficiente para lo que necesito.

¿Hay alguna otra forma en que pueda guardar este objeto? El único requisito es que se ejecute en un safari móvil, cualquier otra cosa va realmente. La solución puede ser javascript o jquery (o cualquier otra js lib si es necesario).

Gracias por cualquier ayuda que usted nos pueda proporcionar.


La respuesta aquí radica en comprender qué información realmente necesita almacenar de forma persistente y minimizarla solo a lo que se necesita y luego agregar un método o función para obtener solo esa información y luego guardarla. No conozco su aplicación, pero para una selección de texto, probablemente solo necesite una indicación persistente de qué objeto era y los puntos de inicio y fin de la selección de texto.

Luego, en el lado de restauración, crearía una función para crear una selección utilizando los datos que almacena. No es tan simple serializar / deserializar, pero funcionará.


Mira el repo de JSON-JS GitHub de Crockford . Tiene un archivo, cycle.js , que supuestamente puede convertir objetos con referencias circulares a JSON y volver utilizando JSONPath. Vea el último párrafo en el repositorio léame y los comentarios del archivo.