chenyinkai / blog

学习笔记,技术心得,疑难困惑,生活总结。喜欢的请star。。
42 stars 1 forks source link

深拷贝与浅拷贝 #3

Open chenyinkai opened 7 years ago

chenyinkai commented 7 years ago

js浅拷贝

浅拷贝就是简单的赋值,因为对象和数组在赋值时都是引用传递,所以只是传递 一个指针,改变值的时候会改变初始对象的值。

js深拷贝

若需改变值时不影响初始对象的值,则需要用到深拷贝。

方法一:slice,原理:slice返回一个新数组

let deepArr = [1, 2, 3];
let deepArr1 = deepArr.slice(0);
deepArr1[1] = 'test';
console.log('deep copy: ' + deepArr + " " + deepArr1);   //deep copy: 1,2,3 1,test,3

方法二:concat,原理:concat返回一个新数组

let deepArr2 = [1, 2, 3];
let deepArr3 = deepArr2.concat();
deepArr3[1] = 'test';
console.log('deep copy: ' + deepArr2 + " " + deepArr3);   //deep copy: 1,2,3 1,test,3