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

如题所述

第1个回答  2020-09-13

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))实现深拷贝,但是涉及到上面的情况(除循环引用的情况外),可以考虑使用如下方法实现深拷贝:

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

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网