深拷贝和浅拷贝及应用场景


深浅拷贝,都是拷贝对象内的数据到新对象,新旧对象内的数据相同。

1.浅拷贝

只拷贝对象的第一层属性,如果对象中还有对象,只是拷贝的内存地址(引用),两者修改会相互影响。用于对象中都是基本数据类型的情况。

2.深拷贝

拷贝对象的多层属性,如果对象中还有对象,会继续拷贝,使用递归实现。

3.深浅拷贝的实现

浅拷贝:

function copy(oldObj) {
        let newObj = {};
        for (let k in oldObj) {
          newObj[k] = oldObj;
        }
        return newObj;
      }

深拷贝:

function deepCopy(oldObj) {
        let newObj = {};
        for (let k in oldObj) {
          if (oldObj[k] instanceof Array) {
            newObj[k] = [];
            newObj[k] = deepCopy(oldObj);
          } else if (oldObj[k] instanceof Object) {
            newObj[k] = {};
            newObj[k] = deepCopy(oldObj);
          } else {
            newObj[k] = oldObj[k];
          }
        }
        return newObj;
      }

 4.深浅拷贝的应用场景

查看很多网友分享的业务需求后,我觉得深浅拷贝的应用场景可以用一句话总结:我想要使用这个对象内的数据,但是不想修改原本的对象内的数据内容时,使用深浅拷贝来复制数据,并对新的对象内的数据进行操作。

 




 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM