我需要使用localStorage来存储一些Ember对象。我注意到Ember对象具有名称为__ember1334992182483的属性。当我对Ember对象调用JSON.stringify()时,这些__ember*属性不会被序列化。为什么会这样呢?我并不是说我想要序列化那些属性。我只是好奇它们到底是什么以及它们是如何实现的,以使它们不被序列化。
我正在使用cycle.js (https://github.com/douglascrockford/JSON-js/blob/master/cycle.js)来编码包含重复引用的数据结构,将其转换为可用于重建原始数据结构的字符串。它让你可以这样做:
对于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对象的最佳方法吗?是否有推荐的技术?
__ember*
属性不在JSON.stringify()
的输出中? - hekevintranEmber.Object
上执行for (prop in obj) {}
,那么没有列出任何__ember*
,并且对于已定义的属性,obj.hasOwnProperty
的检查只返回true,参见http://jsfiddle.net/pangratz666/w53DH/。 - pangratz__ember*
属性不会在for...in
循环中列出。执行App.obj.hasOwnProperty('__ember1335029966963')
返回true
。 - hekevintran