什么浅拷贝
把数组/对象第一层的值,复制到新的数组/对象中
浅拷贝使用场景?
修改数组/对象,影响另一个数组/对象,“砍断”他们的联系
如何实现浅拷贝
const obj = {
a: 1,
b: 2,
c: {
ca: 3
}
}
let newobj = {}
Object.assign(newobj, obj);
// 此时我们改变newobj中的a属性的值 和c对象下ca属性的值
newobj.a = 2
newobj.c.ca = 5
console.log(obj, newobj);
什么深拷贝
把数组/对象所有层的值,复制到新的数组/对象中
如何实现深拷贝
用运递归执行深拷贝
let obj = {
a: 1,
b: {
c: 2,
},
};
function deepClone(obj) {
if(!typeof obj == 'object') return '传入的不是引用类型'
let newClone = Array.isArray(obj)? [] : { }
for (const key in obj) {
newClone[key] = typeof obj[key] == 'object'? deepClone(obj[key]) : obj[key]
}
return newClone
}
const dep = deepClone(obj)
dep.a = 2
dep.b.c = 3
console.log(dep,obj)
什么是递归
递归是指在函数的定义中使用函数自身的方法。
递归必须要有个结束条件,我们称之为出口!
function sum(num) {
if (num == 1) return 1
return num + sum(num - 1
}
console.log(sum(5));//15