深拷贝 vs 浅拷贝

浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。

深拷贝:将 B 对象拷贝到 A 对象中,包括 B 里面的子对象,

浅拷贝:将 B 对象拷贝到 A 对象中,但不包括 B 里面的子对象

1. JSON.parse(JSON.stringify(arr));

这种方法虽然可以实现数组或对象深拷贝,但不能处理函数

let arr = [1, 3, {

    username: ' kobe'

},function(){}];

let arr4 = JSON.parse(JSON.stringify(arr));

arr4[2].username = 'duncan';

console.log(arr, arr4)

2.递归&&判断类型

    function extend(target, source, deep) {

        for (key in source)

            if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {

                if (isPlainObject(source[key]) && !isPlainObject(target[key]))

                    target[key] = {}

                if (isArray(source[key]) && !isArray(target[key]))

                    target[key] = []

                extend(target[key], source[key], deep)        // 执行递归

            }

            else if (source[key] !== undefined) target[key] = source[key]

    }

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容