深拷貝

下面總結(jié)幾種深拷貝的方法:

  • JSON
    JSON.parse(JSON.stringify());
    JSON.stringify方法會忽略對象的不可遍歷屬性。
  • 自己手寫一個(gè)函數(shù)
function clone(target) {
  if(typeof target === 'object'){
    let copydata = Array.isArray(target)?[]:{}
    for(let key in target) {
      copydata[key] = clone(target[key])
    }
    return copydata
  }else {
    return target
  }
}
  • 對于循環(huán)引用的對象進(jìn)行深拷貝
function clone(target, map = new Map()) {
    if (typeof target === 'object') {
        let cloneTarget = Array.isArray(target) ? [] : {};
        if (map.get(target)) {
            return map.get(target);
        }
        map.set(target, cloneTarget);
        for (const key in target) {
            cloneTarget[key] = clone(target[key], map);
        }
        return cloneTarget;
    } else {
        return target;
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 小編已經(jīng)更新了代碼部分,戳這里 一、數(shù)據(jù)類型 數(shù)據(jù)分為基本數(shù)據(jù)類型(String, Number, Boolean...
    grain先森閱讀 2,803評論 2 53
  • 淺拷貝和深拷貝都是對于JS中的引用類型而言的,淺拷貝就只是復(fù)制對象的引用(堆和棧的關(guān)系,簡單類型Undefined...
    卻忘不掉你心言閱讀 572評論 0 0
  • 寫在前面 各類技術(shù)論壇關(guān)于深拷貝的博客有很多,有些寫的也比我好,那為什么我還要堅(jiān)持寫這篇博客呢,之前看到的一篇博客...
    心_c2a2閱讀 21,494評論 3 18
  • 數(shù)據(jù)類型 數(shù)據(jù)分為基本數(shù)據(jù)類型(String,Number,Boolean,Null,Undefined,Symb...
    oWSQo閱讀 263評論 0 0
  • 持續(xù)了一個(gè)星期的懶漢模式,今天我要更新?lián)Q代了。晚飯過后,拿著跳繩在操場上溜了一圈。初夏的夜晚,晚風(fēng)絲絲透過。大腦的...
    活在世間像臥底閱讀 281評論 0 0

友情鏈接更多精彩內(nèi)容