深拷貝和淺拷貝及應用場景


深淺拷貝,都是拷貝對象內的數據到新對象,新舊對象內的數據相同。

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