国产探花免费观看_亚洲丰满少妇自慰呻吟_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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德清县| 平山县| 崇文区| 信宜市| 桃园市| 大丰市| 平谷区| 石楼县| 宜丰县| 长宁县| 泰宁县| 嘉祥县| 万全县| 乐平市| 蕉岭县| 聂荣县| 涟源市| 沛县| 泰和县| 吐鲁番市| 高雄市| 策勒县| 即墨市| 平阳县| 鸡东县| 治县。| 泰来县| 丹凤县| 土默特左旗| 垣曲县| 蚌埠市| 迁西县| 桦川县| 临泽县| 五家渠市| 岳普湖县| 延边| 平塘县| 三穗县| 襄垣县| 苏尼特右旗|