国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

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

2024-05-06 16:44:49
字體:
來源:轉載
供稿:網友

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

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

概念1:淺拷貝

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

概念2:深拷貝

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

概念3:數組深拷貝的實現

1. 使用for循環

<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循環

<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來實現

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

總結:以上就是實現數組和對象深拷貝的一些常用方法,可以結合具體的情形使用適合的方法。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泾源县| 南阳市| 马尔康县| 滦平县| 泾阳县| 海盐县| 蓬溪县| 尼木县| 铅山县| 微山县| 镇原县| 阳东县| 同仁县| 佳木斯市| 阿鲁科尔沁旗| 太谷县| 宜丰县| 仙游县| 岳西县| 枣阳市| 岳阳市| 岳阳县| 油尖旺区| 黄大仙区| 山东省| 忻州市| 上高县| 册亨县| 城固县| 阜宁县| 南昌市| 黎平县| 大悟县| 西林县| 息烽县| 合作市| 济宁市| 宕昌县| 阿尔山市| 凤山市| 凌源市|