深复制和浅复制的区别:
-
什么是深复制:深复制复制变量值,对于非基本类型的变量,则递归至基本类型变量后,再复制
-
浅复制对内存地址的复制,让目标对象指针和源对象指向同一片内存空间
function aa(obj) {
let objclone = Array.isArray(obj) ? [] : {}
//判断被复制的是对象还是数组 然后赋给新的变量
if (obj && typeof obj === 'object') {
//判断
for (key in obj) {
//解析
if (obj.hasOwnProperty(key)) {
//判断数组里面是否还有对象
if (obj[key] && typeof obj[key] === 'object') {
objclone[key] = aa(obj[key])
} else {
objclone[key] = obj[key]
}
}
}
}
return objclone
}
let a = [{
number: 1
},
{
number: 2
},
{
number: 3
}
];
let b = a[0]
a[0].number = 10
console.log(a, b);
a = [{number:10},number:2},number:3}]
b = [{number:1},number:2},number:3}]
如果是这样的话
let b = a
a[0].number = 10
console.log(a, b);
a = [{number:10},number:2},number:3}]
b = [{number:10},number:2},number:3}]
上面的代码主要的 还是这两行代码
if (obj.hasOwnProperty(key)) {
//判断数组里面是否还有对象
if (obj[key] && typeof obj[key] === 'object') {}
}