最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript深拷貝的幾種情況總結(jié)

 更新時間:2022年01月12日 15:58:13   作者:Merde!  
這篇文章主要為大家介紹了javascript深拷貝的幾種情況,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

在前端項目的數(shù)據(jù)處理中,json數(shù)據(jù)的拷貝是很常見的,怎么使拷貝的雙方數(shù)據(jù)之間互不影響,這就要用到深拷貝了

深拷貝:引用數(shù)據(jù)類型中名存在棧內(nèi)存中,值存在于堆內(nèi)存中,但是棧內(nèi)存會提供一個引用的地址指向堆內(nèi)存中的值,深拷貝就是增加了一個指針并且申請了一個新的內(nèi)存,使這個增加的指針指向這個新的內(nèi)存。方法一:使用Object.assign(),一般用于數(shù)據(jù)類型比較簡單,層數(shù)不大于1的數(shù)據(jù);因為Object.assign無法深層拷貝。

const strJson = {
      id:'12343231',
      name:'張三',
      age:23,
      inof:{
        sex:'男'
      },
      sjid:null,
      strHandle () {
        console.log('111111111');
      }
    }
    obj.name = 'lisi'
    obj.inof.sex = '女'
    console.log('obj',obj);
    console.log('strJson',strJson);   

結(jié)果:

在這里插入圖片描述

方法二:使用JSON.parse和JSON.stringify,一般用于數(shù)據(jù)類型比較復(fù)雜的,有深層嵌套的數(shù)據(jù);但是undefined , function, RegExp 等類型無法處理;

const strJson = {
      id:'12343231',
      name:'張三',
      age:23,
      inof:{
        sex:'男'
      },
      sjid:null,
      strHandle () {
        console.log('111111111');
      }
    }
    const obj = JSON.parse(JSON.stringify(strJson))
    obj.name = 'lisi'
    obj.inof.sex = '女'
    console.log('obj',obj);
    console.log('strJson',strJson);

結(jié)果:

在這里插入圖片描述

第三種:使用遞歸拷貝,在代碼中處理特殊的情況。

 function copyHandle (strJson) {
      let result ;
      // 判斷是否存在
      if (!strJson) return null;
      // 判斷是否是對象
      if (typeof strJson !== 'object') return strJson;
      // 判斷是否是數(shù)組
      if (Array.isArray(strJson)) {
        result = [];
        for (let i of strJson) {
          result.push(copyHandle(i))
        }
      }//判斷是否是RegExp
      else if(strJson.constructor===RegExp) {
        result = strJson
      }//判斷是否是對象
      else {
        result = {}
        for (let i in  strJson) {
          result[i] = copyHandle(strJson[i])
        }
      }
      // 返回結(jié)果
      return result
    }

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

最新評論

怀柔区| 高雄市| 家居| 通城县| 如皋市| 额尔古纳市| 昭通市| 社会| 桑日县| 昆山市| 天全县| 定陶县| 社会| 太仓市| 阳信县| 游戏| 台山市| 城市| 尤溪县| 延津县| 宝应县| 黎平县| 文水县| 衡东县| 陕西省| 辽中县| 兰考县| 宣威市| 砚山县| 昌黎县| 镇平县| 安化县| 新干县| 天门市| 莲花县| 常德市| 新沂市| 临清市| 美姑县| 资中县| 桃源县|