如果使用for循环深度遍历,会导致死循环;
或许可以使用 loadsh库的deepclone来实现,还有什么方式吗,原因是什么?
deepCopy (obj) {
var newobj = obj.constructor === Array ? [] : {};
if(typeof obj !== 'object'){
return;
}
for(var i in obj){
newobj[i] = typeof obj[i] === 'object' ? utils.deepCopy(obj[i]) : obj[i];
}
return newobj
}
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
生产中可以使用: circular-json 库来实现,避免JSON.stringify, JSON.parse处理循环报错的问题;
实现原理是:转成序列化后,循环引用的对象使用一个特殊的字符器标记来代替,parse的过程再把标记转成要引用的那个对象(this)