美文网首页
深拷贝 vs 浅拷贝

深拷贝 vs 浅拷贝

作者: 逆风飘游的鱼 | 来源:发表于2021-01-11 14:55 被阅读0次

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

    深拷贝:将 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]

        }

    相关文章

      网友评论

          本文标题:深拷贝 vs 浅拷贝

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