怎样将 JavaScript 对象完整持久化?

JavaScript 对象可以转换为 JSON 文本进行持久化存储。但是这种方式存在几个弊端:

  • 无法存储函数成员。
  • 无法存储循环引用成员。

有没有一种方法能将 JavaScript 对象完整持久化?所谓“完整”指的是,将持久化后的数据还原后,能够完全还原包括函数和循环引用在内的所有成员。

有没有相关的库可以直接使用?(最好能够持久化为纯文本,以便存储到 cookie 或者 local storage 之中。)

阅读 6.3k
4 个回答

代码执行是有上下文的...你持久化了,上下文咋整?目前的唯一持久化的办法就是storage吧..
就比如
一个三体人正在吃饭的时候你把它脱水了。
然后几百年后你重新注水了,它的饭...已经没了。

你莫不是也是在做 echarts的options存储吗? 之前我做过这个事情,为此专门写了一套,支持 function(不带闭包变量)存储和循环引用对象的 JSON工具,代码在这里,欢迎取用。

shy2850/xhcms_2014/blob/master/js/module/json.js

按照你的描述,是否需要将原型链也持久化?并且,如果要持久化函数,就得保证是纯函数,如果函数有状态,是没法保存的。所以,你的需求很难满足

持久化一般只需要保存数据,至于方法等一般不需要持久化。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题