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

JavaScript深拷貝和淺拷貝概念與用法實例分析

 更新時間:2018年06月07日 10:26:29   作者:考拉的墨爾本  
這篇文章主要介紹了JavaScript深拷貝和淺拷貝概念與用法,結(jié)合實例形式較為詳細的分析了javascript深拷貝與淺拷貝的概念、原理、用法及相關操作技巧,需要的朋友可以參考下

本文實例講述了JavaScript深拷貝和淺拷貝概念與用法。分享給大家供大家參考,具體如下:

js中的淺拷貝和深拷貝,只是針對復雜數(shù)據(jù)類型(Objcet,Array)的復制問題。簡單來講淺拷貝和深拷貝都可以實現(xiàn)在原有對象的基礎上再生成一份的作用。但是根據(jù)新生成的對象能否影響到原對象可以分為淺拷貝和深拷貝。

概念1:淺拷貝

淺拷貝就是指拷貝引用,新生成的引用和原來的引用都是指向同一個對象的實例,彼此之間的操作會相互影響。

概念2:深拷貝

在堆中重新開辟內(nèi)存,把原引用對應的對象實例中所有的內(nèi)容進行拷貝,因此保證了深拷貝的對象和原來的對象是完全隔離的,他們之間相互沒有影響。

概念3:數(shù)組深拷貝的實現(xiàn)

1. 使用for循環(huán)

<script type="text/javascript">
  var arr1=['a','b','c'];
  var arr2=[];
  function deepCopy(arr1,arr2){
    for(var i=0;i<arr1.length;i++){
      arr2[i]=arr1[i];
    }
  }
  deepCopy(arr1,arr2);
  arr2[1]='d';
  console.log(arr1);//['a','b','c']
  console.log(arr2);//['a','d','c']
</script>

2. 使用slice()方法

<script type="text/javascript">
  var arr1=['a','b','c'];
  var arr2=arr1.slice(0);
  arr2[1]='d';
  console.log(arr1);//['a','b','c']
  console.log(arr2);//['a','d','c']
</script>

3. 使用concat方法

<script type="text/javascript">
    var arr1=['a','b','c'];
    var arr2=arr1.concat();
    arr2[1]='d';
    console.log(arr1);//['a','b','c']
    console.log(arr2);//['a','d','c']
</script>

概念4:對象的深拷貝

1. 使用for循環(huán)

<script type="text/javascript">
  var obj = {
    name: 'FungLeo',
    sex: 'man',
    old: '18'
  }
  function copyObj(obj) {
    let res = {}
    for (var key in obj) {
      res[key] = obj[key]
    }
    return res
  }
  var obj2 = copyObj(obj);
  obj2["name"]="kka";
</script>

2. 借助JSON來實現(xiàn)

<script type="text/javascript">
  var obj = {
    name: 'FungLeo',
    sex: 'man',
    old: '18'
  }
  var obj2=JSON.parse(JSON.stringif(obj));
  obj2["name"]="kka";
</script>

總結(jié):以上就是實現(xiàn)數(shù)組和對象深拷貝的一些常用方法,可以結(jié)合具體的情形使用適合的方法。

更多關于JavaScript相關內(nèi)容可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript中json操作技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學運算用法總結(jié)

希望本文所述對大家JavaScript程序設計有所幫助。

相關文章

  • webpack4.x打包過程詳解

    webpack4.x打包過程詳解

    這篇文章主要介紹了webpack4.x打包過程詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • 通過實例解析js可枚舉屬性與不可枚舉屬性

    通過實例解析js可枚舉屬性與不可枚舉屬性

    這篇文章主要介紹了通過實例解析js可枚舉屬性與不可枚舉屬性,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • 一個對于Array的簡單擴展

    一個對于Array的簡單擴展

    一個對于Array的簡單擴展...
    2006-10-10
  • chrome瀏覽器不支持onmouseleave事件的解決技巧

    chrome瀏覽器不支持onmouseleave事件的解決技巧

    發(fā)現(xiàn)給div加的 onmouseleave事件在chrome 中不起效果,下面與大家分享下具體的解決方法,不會的朋友可以了解下哈,希望對大家有所幫助
    2013-05-05
  • element-ui 時間選擇器限制范圍的實現(xiàn)(隨動)

    element-ui 時間選擇器限制范圍的實現(xiàn)(隨動)

    這篇文章主要介紹了element-ui 時間選擇器限制范圍(隨動),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Javascript驗證Visa和MasterCard信用卡號的方法

    Javascript驗證Visa和MasterCard信用卡號的方法

    這篇文章主要介紹了Javascript驗證Visa和MasterCard信用卡號的方法,涉及javascript正則驗證的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • Axios設置token請求頭的三種方式

    Axios設置token請求頭的三種方式

    用戶登錄時,后端會返回一個token,并且保存到瀏覽器的localstorage中,可以根據(jù)localstorage中的token判斷用戶是否登錄,所以當發(fā)送請求時,都要攜帶token給后端進行判斷,本文給大家介紹了Axios設置token請求頭的三種方式,需要的朋友可以參考下
    2024-02-02
  • webpack4.x CommonJS模塊化淺析

    webpack4.x CommonJS模塊化淺析

    這篇文章主要介紹了webpack4.x CommonJS模塊化淺析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • JS多個表單數(shù)據(jù)提交下的serialize()應用實例分析

    JS多個表單數(shù)據(jù)提交下的serialize()應用實例分析

    這篇文章主要介紹了JS多個表單數(shù)據(jù)提交下的serialize()應用,接合實例形式分析了原生javascript實現(xiàn)多個表單提交時serialize操作相關使用技巧與操作注意事項,需要的朋友可以參考下
    2019-08-08
  • js DNA動態(tài)序列比對代碼

    js DNA動態(tài)序列比對代碼

    JavaScript動態(tài)序列比對代碼,隨便 寫著玩的,在網(wǎng)上見到用VC、VB寫的比較多,這個算法以前在高中課本上見到過,我只是用Js寫一下試試,或許還不是太準確。
    2010-07-07

最新評論

壤塘县| 安福县| 昭平县| 礼泉县| 珠海市| 寻乌县| 北海市| 毕节市| 汉源县| 武乡县| 观塘区| 德江县| 台州市| 灵丘县| 安化县| 琼中| 永嘉县| 沐川县| 建平县| 屏南县| 康定县| 米泉市| 松阳县| 康马县| 滦平县| 吴江市| 上高县| 新安县| 六盘水市| 隆昌县| 海晏县| 涞水县| 望奎县| 内乡县| 那坡县| 和静县| 聂拉木县| 五寨县| 长治市| 和田县| 道孚县|