json深拷贝有正则表达式的时候会返回空对象,就是js用json深拷贝的缺点吗?

兄弟姐妹们在线求帮请说下,json深拷贝有正则表达式的时候会返回空对象,就是js用json深拷贝的缺点吗?
最新回答
柏拉图爱恋

2024-04-24 00:21:09

JSON.parse(JSON.stringify())复制时间对象、Error对象、正则表达式,函数,或者undefined等值,此方法就会出现问题

    1.如果json里面有时间对象,则序列化结果:时间对象=>字符串的形式;

    2.如果json里有RegExp、Error对象,则序列化的结果将只得到空对象 RegExp、Error => {};

    3.如果json里有 function,undefined,则序列化的结果会把 function,undefined 丢失;

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

    5.如果json里有对象是由构造函数生成的,则序列化的结果会丢弃对象的 constructor;

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

以上,如果拷贝的对象不涉及上面讲的情况,可以使用JSON.parse(JSON.stringify(obj))实现深拷贝,但是涉及到上面的情况(除循环引用的情况外),可以考虑使用如下方法实现深拷贝:

如果被拷贝对象中没有对时间、正则要求兼容的话,可以采用如下方法