深拷贝浅拷贝的理解与区别

浅拷贝可理解成应用,深拷贝可理解成复制出一个全新的东西。

例如 A,B复制了A,修改A

B跟着A变化了===>浅拷贝 shallowCopy (A和B其实是指向堆内存的同一个值)

B不变===>深拷贝 deepCopy(B是不同于A的全新的不同的值)

浅拷贝例子:

var a=[1,2,3]

        var b=a;

        a[0]=5;

        console.log(b) // [5,2,3]

深拷贝:

function deepClone(obj) {

            var newObj = obj instanceof Array ? [] : {};

            if (typeof obj !== 'object') {

                return obj;

            } else {

                for (var i in obj) {

                    newObj[i] = typeof obj[i] === 'object' ? deepClone(obj[i]) : obj[i];

                }

            }

            return newObj;

        }

        var a = [1, 2, 4, 6, [1, 2]];

        var b = deepClone(a);

        a[3] = 7;

        console.log(a);    / / [1, 2, 4, 7, [1, 2]];

        console.log(b);    / /[1, 2, 4, 6, [1, 2]];

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容