JSON.stringify深拷贝的缺点及解决

JSON.stringify深拷贝的缺点及解决
最新回答
你会腻我何必

2022-07-22 18:08:51

1.如果obj里面有时间对象,则JSON.stringify后再JSON.parse的结果,时间将只是

字符串
的形式,而不是对象的形式

2.如果obj里有RegExp(

正则表达式
的缩写)、Error对象,则序列化的结果将只得到空对象;

3、如果obj里有函数,undefined,则序列化的结果会把函数或 undefined丢失;

4、如果obj里有NaN、Infinity和-Infinity,则序列化的结果会变成null

5、JSON.stringify()只能序列化对象的可枚举的自有属性,例如 如果obj中的对象是有

构造函数
生成的, 则使用JSON.parse(JSON.stringify(obj))深拷贝后,会丢弃对象的constructor;

6、如果对象中存在循环引用的情况也无法正确实现深拷贝;
总结:
用法简单,然而使用这种方法会有一些隐藏的坑:因为在序列化JavaScript对象时,所有函数和原型成员会被有意忽略。
通俗点说,JSON.parse(JSON.stringfy(X)),其中X只能是Number, String, Boolean, Array, 扁平对象,即那些能够被 JSON 直接表示的

数据结构

实现深度拷贝: