浅拷贝
let obj1 = {
name: 'zs',
age: 20,
height: 180
}
let obj2 = {}
// 循环遍历 obj1,循环一次,将一个属性拷贝到 obj2 里面
for (let key in obj1) {
// key 表示对象的属性
// console.log(key) // name age height
// console.log(obj1[key]) // zs 20 180
obj2[key] = obj1[key]
}
obj2.height = 200
console.log(obj1)
console.log(obj2)
深拷贝
let obj1 = {
name: 'zs',
age: 20,
info: [180, 80],
dog: {
color: 'black',
age: 3
}
}
let obj2 = {}
// 规律:深拷贝 相当于是 很多个浅拷贝
// 我写一个函数,功能是实现浅拷贝,当我们需要浅拷贝的时候,就调用这个函数
function kaobei(obj1, obj2) {
for (let key in obj1) {
if (obj1[key] instanceof Array) {
obj2[key] = []
kaobei(obj1[key], obj2[key])
} else if (obj1[key] instanceof Object) {
obj2[key] = {}
kaobei(obj1[key], obj2[key])
} else {
obj2[key] = obj1[key]
}
}
}
kaobei(obj1, obj2)
obj1.dog.color = 'red'
console.log(obj1)
console.log(obj2)