亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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 等類型無(wú)法處理;

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;
      // 判斷是否是對(duì)象
      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
      }//判斷是否是對(duì)象
      else {
        result = {}
        for (let i in  strJson) {
          result[i] = copyHandle(strJson[i])
        }
      }
      // 返回結(jié)果
      return result
    }

總結(jié)

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

相關(guān)文章

  • javascript 內(nèi)置對(duì)象及常見(jiàn)API詳細(xì)介紹

    javascript 內(nèi)置對(duì)象及常見(jiàn)API詳細(xì)介紹

    這篇文章主要介紹了javascript 內(nèi)置對(duì)象及常見(jiàn)API的相關(guān)資料,這里對(duì)內(nèi)置對(duì)象進(jìn)行了詳細(xì)的整理,需要的朋友可以參考下
    2016-11-11
  • javascript基礎(chǔ)知識(shí)大集錦(一) 推薦收藏

    javascript基礎(chǔ)知識(shí)大集錦(一) 推薦收藏

    主要知識(shí)點(diǎn):js數(shù)組,數(shù)字函數(shù),字符串函數(shù),表單驗(yàn)證,hashMap,堆棧,日期函數(shù),call函數(shù) 等。
    2011-01-01
  • 張孝祥JavaScript學(xué)習(xí)階段性總結(jié)(2)--(X)HTML學(xué)習(xí)

    張孝祥JavaScript學(xué)習(xí)階段性總結(jié)(2)--(X)HTML學(xué)習(xí)

    張孝祥JavaScript學(xué)習(xí)階段性總結(jié)(2)--(X)HTML學(xué)習(xí)...
    2007-02-02
  • JavaScript—window對(duì)象使用示例

    JavaScript—window對(duì)象使用示例

    window對(duì)象是JavaScript瀏覽器對(duì)象模型中的頂層對(duì)象,其包含多個(gè)常用方法和屬性,下面為大家介紹下window對(duì)象的使用
    2013-12-12
  • Firefox window.close()的使用注意事項(xiàng)

    Firefox window.close()的使用注意事項(xiàng)

    window.close()在IE下可以執(zhí)行關(guān)閉,但在Firefox下不關(guān)閉,不是JS代碼window.close()的問(wèn)題,而是Firefox的配置問(wèn)題
    2009-04-04
  • 詳解JavaScript對(duì)W3C DOM模版的支持情況

    詳解JavaScript對(duì)W3C DOM模版的支持情況

    這篇文章主要介紹了詳解JavaScript對(duì)W3C DOM模版的支持情況,在JS前端編程的兼容性方面可作參考使用,需要的朋友可以參考下
    2015-06-06
  • 最新評(píng)論