對于有循環(huán)引用的JS對象,用JSON.stringify會產(chǎn)生typeError嗡害。
解決辦法:編寫一個replacer作為stringify的第二個參數(shù)。我這里封裝了一個方法,傳入對象提前,返回Json字符支竹,代碼如下:
function cycleObjectToJSON(o) {
var cache = [];
return JSON.stringify(o, function(key, value) {
if(['form','dialog'].includes(key)) {return;}
if (typeof value === "object" && value !== null) {
if (cache.indexOf(value) !== -1) {
// Duplicate reference found
try {
// If this value does not reference a parent it can be deduped
return JSON.parse(JSON.stringify(value));
} catch (error) {
// discard key if value cannot be deduped
return;
}
}
// Store value in our collection
cache.push(value);
}
return value;
});
}