js中的克隆


1.如果克隆對象是基本類型,直接復制就可以

<script type="text/javascript">
var str1 = 'abc'
var str2 = str1
console.log(str2) //abc
str1 = '123'
console.log(str2) //abc
</script>

2.不是基本類型就不可以直接復制,以數組為例

<script type="text/javascript">
var a=[1,2,3,4];
var b= a;
var c=b;
c.pop();

console.log(a) //[1,2,3]
console.log(b) //[1,2,3]
console.log(c) //[1,2,3]


</script>

克隆的幾種方法


//1.比較簡單的遍歷數組賦值
<script type="text/javascript">
var a = [1,2,3,4];
var b = [];
for(var i = 0; i < a.length; i++){
b.push(a[i])
}
console.log(b) //[1,2,3,4]

</script>

//2.slice方法
/*
1) 作用:從一個數組中截取出新的數組
2) 格式:數組名.slice(begin,end);
 begin表示開的下標
 end表示結束的下標,但是在截取時不包含結束下標對應的元素
3) 注意:
 原數組不受影響
 如果只設置一個參數,即begin,那么會從begin截取到最后
 如果不寫參數,那么slice方法可以實現數組的復制 */

<script type="text/javascript">
var arr1 = [1, 2, 3, 4]
var arr2 = arr1.slice(0)
console.log(arr2) //[1,2,3,4]
arr1 = [4, 3, 2, 1]
console.log(arr2) //[1,2,3,4]


</script>

//3.assign實現深淺克隆
//淺克隆
<script type="text/javascript">
var obj = { a: 1 };
var copy = Object.assign({}, obj);
console.log(copy); // { a: 1 }


var arr = [1,2,3];
var copy = Object.assign([], arr);
console.log(copy); // [1,2,3]


//深克隆
let arr1 = [1,2,3,4,5];
let arr2 = JSON.parse(JSON.stringify(arr1));
console.log(arr2) //[1,2,3,4,5]

</script>


//4.concat方法
/*1) 作用:拼接數組
2) 格式:數組名1.concat(數組名2);就是指將數組2拼接在數組1后面
3) 返回值:為拼接后的新的數組
4) 注意:原數組不受影響*/
<script type="text/javascript">

let arr1 = [1,2,3,4];

let arr2 = arr1.concat()

arr2[1] = 9
console.log(arr1, arr2) //[1,2,3,4], [1,9,3,4]

</script>
---------------------
版權聲明:本文為CSDN博主「Hero4399」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/hero4399/article/details/78298994


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM