Open chenyinkai opened 7 years ago
浅拷贝就是简单的赋值,因为对象和数组在赋值时都是引用传递,所以只是传递 一个指针,改变值的时候会改变初始对象的值。
若需改变值时不影响初始对象的值,则需要用到深拷贝。
方法一: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
js浅拷贝
浅拷贝就是简单的赋值,因为对象和数组在赋值时都是引用传递,所以只是传递 一个指针,改变值的时候会改变初始对象的值。
js深拷贝
若需改变值时不影响初始对象的值,则需要用到深拷贝。