利用JSON.stringify和JSON.parse实现深拷贝
cloneDeep(obj1){
let obj = JSON.stringify(obj1);
let obj2 = JSON.parse(obj);
return obj2;
}
let a = [1, [1, 2], 3, 4];
let b = this.cloneDeep(a);
b[1][0] = 8;
console.log('a:>> ', a); // a:>>1,1,2,3,4
console.log('b:>> ', b); //b:>> 2,8,2,3,4
缺陷:JSON.stringify和JSON.parse是先把数组或对象转换为字符串,再将字符串转换为数组或对象,但是function无法转换为字符串,所以function转换后都是Object,开发中无特殊情况已经够用。
利用lodach插件(可以完美解决function无法拷贝的情况)
1.安装插件
npm install lodash
2.引入插件
import lodash from 'lodash'
let arr= [1, 2, 3];
let arrDeep = lodash.cloneDeep(arr);
arrDeep[0] = 10;
console.log('arr:>> ', arr[0]); // a:>>1
console.log('arrDeep:>> ', aarrDeep[0]); // arrDeep:>>10