如何使用循环引用保存对象?

我想在本地保存具有循环引用的对象。我有什么选择?

我的第一个想法是使用HTML5本地存储,但是由于循环引用,我无法对该对象进行字符串化。

具体来说,我正在尝试保存当前选择的DOMSelection对象。

例:

  var sel = window.getSelection();

var selstring = JSON.stringify(sel); // Breaks here ...

localStorage.setItem("selection",selstring);

我现在可以使字符串化工作的唯一方法是忽略某些对象,如下所示:

var selstring = JSON.stringify(sel,function(k,v){

if( k=="anchorNode" ||

k=="baseNode" ||

k=="extentNode" ||

k=="focusNode") return undefined;

return v;

});

但这给我留下了一个相当空的DOMSelection对象,不足以满足我的需要。

还有其他方法可以保存该对象吗?唯一的要求是它可以在移动safari中运行,其他任何事情都是真的。该解决方案可以使用javascript或jquery(如果需要,也可以使用其他js库)。

感谢您的任何帮助,您可以提供。

回答:

查看Crockford的JSON-JS GitHub存储库。它有一个文件,cycle.js据称可以将具有循环引用的对象转换为JSON,然后使用JSONPath转换回来。请参阅存储库的“阅读我”和文件注释中的最后一段。

以上是 如何使用循环引用保存对象? 的全部内容, 来源链接: utcz.com/qa/402870.html

回到顶部