使用JSON.parse(JSON.stringfy(obj))深拷贝带来的问题

296 阅读1分钟

今天写代码的过程中发现,我使用JSON.parse(JSON.stringfy(obj))深拷贝的对象,当其中某个属性的值为函数时,这个属性会丢失,然后网上查阅资料才知道是JSON.parse(JSON.stringfy(obj))有问题。

这种方法深拷贝主要有如下几个问题:

1.如果obj里面存在时间对象,拷贝完会变为字符串

2.如果obj里有RegExp、Error对象,拷贝完变成空对象

3.如果obj里有函数,undefined,拷贝完属性会丢失

4.如果obj里有NaN、Infinity和-Infinity,拷贝会变成null

5.如果obj中的对象是有构造函数生成的,拷贝后,会丢弃对象的constructor

6.如果对象中存在循环引用的情况也无法正确实现深拷贝

推荐使用lodash里的cloneDeep方法

参考文章:www.cnblogs.com/goloving/p/…