1.浅拷贝就是指拷贝数组或者对象的第一层,对于嵌套对象或数组,并不会进行深度复制,而是复制它们的引用。这意味着如果源对象的属性是对象或数组,那么目标对象中的相应属性将与源对象中的相同属性共享相同的引用。
let obj = [1,2,3,{a:4,b:{c:5}}}]
//浅拷贝
const copyObj = Object.assign(obj)
console.log(obj)
obj[3].a =10
console.log(obj)
console.log(copyObj )
这里调用了object.assign实现浅拷贝,其实这里的话copyObj的对象其实引用obj的对象,这样的话obj[3].a改变数据的时候 copyObj的也会一起改变 也可以说是对象的引用
那怎么实现深拷贝呢
const deepObj = JSON.parse(JSON.stringify(obj))
其实浅拷贝也可以手写
function deepCopy(obj) {
if (typeof obj !== "object" || obj === null) {
return obj; // 如果不是对象或数组,直接返回原始值
}
// 创建新的对象或数组
const result = Array.isArray(obj) ? [] : {};
// 遍历原对象或数组,并递归地进行深拷贝
for (const key in obj) {
result[key] = deepCopy(obj[key]);
}
return result;
}