js 对象深度拷贝

js 的Object.assign 可以拷贝一个对象,但是更深层次的对象无法进行拷贝。
所以还是必须自己实现一个递归来实现深拷贝

// 深度拷贝
    function extend(obj, obj2) {
        // 拷贝对象,防止修改了原始obj
        var newObj = Object.assign({}, obj);
        for (var key in obj2) {
            if ("object" != typeof obj[key] || null === obj[key] || Array.isArray(obj[key])) {
                if (void 0 !== obj2[key]) {
                    newObj[key] = obj2[key];
                }
            }else{
                    newObj[key] = extend(obj[key], obj2[key]);
                }
        }
        return newObj
    }

这样一来,就不用担心嵌套对象的拷贝了

posted @ 2018-09-12 10:48  jsoncode  阅读(1464)  评论(0编辑  收藏  举报