1. 浅拷贝只是拷贝一层,更深层次对象级别的只是拷贝引用。
  2. 深拷贝拷贝多层,每一级别的数据都会拷贝。

浅拷贝

ES6—32:浅拷贝和深拷贝_浅拷贝
浅拷贝在拷贝对象的时候,只会拷贝引用。

ES6提供的浅拷贝方法

ES6—32:浅拷贝和深拷贝_浅拷贝_02

深拷贝(原生JS)

<script>
        var obj = {
            id: 1,
            name: 'andy',
            age: {
                pink: 666
            }
        };
        var o = {};
        
        function deepCopy(newObj,oldObj) {
            for(var k in oldObj) {
                // 首先获取每一个键对应的值,然后判断这个值是否为数组、对象
                var temp = oldObj[k];
                if(temp instanceof Array) {
                    newObj[k] = [];
                    deepCopy(newObj[k],temp);
                } else if(temp instanceof Object) {
                    newObj[k] = {};
                    deepCopy(newObj[k],temp);
                } else {
                    newObj[k] = temp;
                }
            }
        }
        deepCopy(o,obj);
        // console.log(o);
        o.age.pink = 777;
        console.log(obj);
        console.log(o);
    </script>

ES6—32:浅拷贝和深拷贝_深拷贝_03