解决JSON.stringify在使用循环体内部变量报错的问题

解决JSON.stringify在使用循环体内部变量报错的问题

蓝科迪梦
2022-10-08 / 0 评论 / 216 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年10月08日,已超过793天没有更新,若内容或图片失效,请留言反馈。
var source = {name:666};

source.o = source;

这里直接用JSON.stringify(source)打印会报错:Converting circular structure to JSON at Object.stringify,正常需要删除对象的循环引用,这种错误的编码方式,但是有时候我们想打印下对象里都有什么,所以就有了一下方式:



deepClone = function(source) {

                if (!source || typeof source !== 'object') {

                    throw new Error('error arguments', 'shallowClone')

                }

                var targetObj = this.testArray(source) ? [] : {}

                let iii = 0;

                for (var keys in source) {

                    console.log('\r\n'+keys);



                    targetObj[keys] = source[keys];

                    if(iii >= 50 ){  //防止对象过多死循环 导致栈溢出

                        break;

                    }

                    iii++;

                }

                return targetObj

}



console.log(deepClone(source));
0

评论

博主关闭了所有页面的评论