循环引用的对象,JSON.stringify报错
function circularObjStringify(circularObj){
var cache = [];
var str = JSON.stringify(circularObj, function(key, value) {
if (typeof value === 'object' && value !== null) {
if (cache.indexOf(value) !== -1) {
// 移除
return;
}
// 收集所有的值
cache.push(value);
}
return value;
});
cache = null; // 清空变量,便于垃圾回收机制回收
return str // 移除掉循环引用的 JSON.stringify
}
示例
let b = {a:2};
b.b = b;
console.log(circularObjStringify(b))// {"a":2}
console.log(JSON.stringify(b)) // TypeError: Converting circular structure to JSON