«

深浅拷贝实例

yang 发布于 阅读:375 JS高阶阶段


如果想要一个一模一样的新对象??
let obj2 = obj1; //不能得到新对象,因为他们是引用关系,指向同一个内存地址

想要得到一个一样的对象,就需要深拷贝和浅拷贝
//浅拷贝:只拷贝一层数据
            let obj2 = {};
            for (let key in obj1) {
                obj2[key] = obj1[key];
            }
            console.log(obj2);

            console.log(obj1 === obj2);
            obj1.name = '关羽';
            console.log(obj1, obj2);

            //浅拷贝:Object.assign()
            let obj3 = Object.assign({}, obj1);
            console.log(obj3);
            console.log(obj3 === obj1);
 <body>
        <script>
            //浅拷贝的问题:
            let obj1 = { name: '刘备', age: 19, like: ['打球', '旅游', '吃肉'] };
            let obj2 = {};
            for (let key in obj1) {
                obj2[key] = obj1[key];
            }

            obj1.like[0] = '打架';

            console.log(obj1)
            console.log(obj2) //由于浅拷贝只遍历一层数据,如果数据又是一个引用类型,依然会影响

            //深拷贝:遍历数组或对象的所有子数据,每一层都单独拷贝
            let obj3 = JSON.parse(JSON.stringify(obj1));
            obj3.like[0] = '打游戏';
            console.log(obj1);
            console.log(obj3);
        </script>
    </body>

深浅拷贝实例

版权所有:微4e
文章标题:深浅拷贝实例
除非注明,文章均为 微4e 原创,请勿用于任何商业用途,禁止转载

推荐阅读:


扫描二维码,在手机上阅读
请先 登录 再评论