标签:script 说明 structure 需要 ret 扩展 循环 bsp asc
先说明一下什么是循环引用对象:
var a={"name":"zzz"}; var b={"name":"vvv"}; a.child=b; b.parent=a;
这里的a和b都是一个循环引用对象。
循环引用对象本来没有什么问题,序列化的时候才会发生问题,比如调用JSON.stringify()对该类对象进行序列化,就会报错: Converting circular structure to JSON. 而序列化需求很常见,比如发起一个ajax请求提交一个对象就需要对对象进行序列化。
针对这种问题的一种解决方案是去除这种循环引用,Douglas Crockford写了一个JSON的扩展包,里面的cycle.js刚好就是用来解决此类问题。
例如:
var c = JSON.decycle(a)
这样就去除了a对象的循环引用,如果想恢复原本的循环引用对象a,可以调用retrocycle方法
var a = JSON.retrocycle(c)
标签:script 说明 structure 需要 ret 扩展 循环 bsp asc
原文地址:http://www.cnblogs.com/cnundefined/p/7117406.html