1. 程式人生 > >javascript中的循環引用對象處理

javascript中的循環引用對象處理

block pan script 需要 恢復 clas 對象處理 ren nbsp

先說明一下什麽是循環引用對象:

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)

javascript中的循環引用對象處理