你不知道的 JSON.stringify(上)
最近使用 Vue 写后台管理系统,在做 Tab 组件的持久化时遇到一个问题:
看意思应该是产生了循环引用的结构,下面是不同浏览器对于这个类型错误报出错的形式:
举个例子🌰:
此时到控制台里面运行一下:
可以看到和我上面说的 Vue 的例子是类似的。
那如何解决呢?
既然是由于循环引用导致的,那我们可以在发生循环引用的地方给切断。
那如何切断呢?
幸好 JSON.stringify 方法提供了便利,语法如下:
replacer 可以作为一个函数传入,且接受 key 和 value 作为入参,如下:
那解决方案就有啦:
每次需要定位 key 值,如果嫌麻烦还有更简便的方法:
推荐几个解决类似问题的库:
circular-json (只维护,vue-devtools 内部也使用它)
flatted (上面的继承者)
json-stringify-safe
cycle.js
版权声明: 本文为 InfoQ 作者【前端黑板报】的原创文章。
原文链接:【http://xie.infoq.cn/article/e4e2754eceb3e129b5ecfaaa5】。文章转载请联系作者。
评论 (3 条评论)