美文网首页
如何进行深度克隆?

如何进行深度克隆?

作者: 风雅欢乐 | 来源:发表于2020-05-13 20:14 被阅读0次

    方法一

    var newObj = JSON.parse(JSON.stringify(sourceObj));
    

    缺点:
    - 无法对对象中的函数, 正则表达式, 稀松数组等特殊对象进行克隆
    - 会使得所有对象的constructor都指向Object
    - 如果对象有循环引用, 会报错

    方法二

    function deepClone(target) {
        let result;
        let type = Object.prototype.toString.call(target);
        if (type === '[object Object]') {
            result = {};
        } else if (type === '[object Array]') {
            result = [];
        } else {
            return target;
        }
        
        for (let attr in target) {
            result[arrt] = deepClone(target[attr]);
        }
        
        return result;
    }
    

    缺点: 同样未能处理特殊对象, 比如属性是个正则对象, 日期对象, 函数等情况

    相关文章

      网友评论

          本文标题:如何进行深度克隆?

          本文链接:https://www.haomeiwen.com/subject/gkbonhtx.html