我需要使用 localStorage 来存储一些 Ember 对象。我注意到 Ember 对象具有名称如__ember1334992182483
. 当我调用JSON.stringify()
Ember 对象时,这些__ember*
属性不会序列化。为什么是这样?我并不是说我想序列化这些属性。我只是好奇它们到底是什么以及它们是如何实现的,因此它们不会被序列化。
我正在使用cycle.js(https://github.com/douglascrockford/JSON-js/blob/master/cycle.js)将包含重复引用的数据结构编码为可用于重建原始数据的字符串结构。它可以让你这样做:
a = {a:1}
b = {b:1}
c = [[a, b], [b, a]]
foo = JSON.stringify(JSON.decycle(c)) // "[[{'a':1},{'b':1}],[{'$ref':'$[0][1]'},{'$ref':'$[0][0]'}]]"
JSON.retrocycle(JSON.parse(foo)) // reconstruct c
对于 Ember 对象,我可以做同样的事情,但我还需要将反序列化的对象传递给,Ember.Object.create()
因为它们被反序列化为纯 JavaScript 对象。
这是序列化/反序列化 Ember 对象的最佳方法吗?有推荐的技术吗?