javascript中的循环引用对象处理

Posted CNundefined

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript中的循环引用对象处理相关的知识,希望对你有一定的参考价值。

先说明一下什么是循环引用对象:

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中的循环引用对象处理的主要内容,如果未能解决你的问题,请参考以下文章

用JSON.stringify处理循环引用对象

Javascript / 垃圾收集器中的循环引用

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

VSCode自定义代码片段12——JavaScript的Promise对象

VSCode自定义代码片段12——JavaScript的Promise对象