深拷贝和浅拷贝
浅拷贝是一种仅复制对象最外层属性的拷贝方式,对于基本类型直接复制值,对于引用类型则复制内存地址,导致新旧对象共享同一引用数据。
实例:
实现方法: 使用赋值运算符(=)或者Object.assign()函数进行拷贝
// 浅拷贝
const a = [1, 2, 3, 4]
const b = a
b[0] = 5
console.log(a) //[5,2,3,4]
console.log(b)//[5,2,3,4]
深拷贝递归复制所有嵌套层级的引用类型数据,生成完全独立的对象树
实例:
实现方法: 递归拷贝 JSON.parse(JSON.stringify(obj)) …扩展运算符
// 深拷贝
const c: any = [1, 2, 3, 4]
const d: any = [...c] //这只适用于一层深拷贝
d[0] = 6
console.log(c) //[1,2,3,4]
console.log(d) //[6,2,3,4]
如果拷贝的有对象用...扩展符就会失效
// 深拷贝
const c: any = [1, 2, 3, 4, { a: 1 }]
const d: any = [...c] //这只适用于一层深拷贝
d[4].a = 6
console.log(c) //[1,2,3,4,{a:6}]
console.log(d) //[1,2,3,4,{a:6}]const f: any = JSON.parse(JSON.stringify(c));
f[4].a = 7;
console.log(c) //[1,2,3,4,{a:6}]
console.log(f); //[1,2,3,4,{a:7}]