浅拷⻉: 基本数据类型的时候就是将值直接赋值给新的变量 复杂数据类型在进⾏浅拷⻉的时候就是
将栈⾥⾯的地址直接赋值给了新的变量 这个时候两个变量指向的是同⼀个地址,⼀旦地址⾥⾯的值发
⽣变化,这两个变量的值都会发⽣变化
⽅法:直接赋值
function cloneObj(obj) {
let clone = {};
// ⽤ for in 遍历obj的属性
for (let i in obj) {
clone[i] = obj[i];
}
return clone;
}
深拷⻉: 就是在内存中会⽣成⼀块新的空间 然后可以将值放进这个开辟的新的空间,此刻数据之间是
不会互相⼲扰的
⽅法:for in +递归 、 JSON.parse(JSON.stringify())
// for in +递归
function cloneThing(obj) {
if (obj instanceof Array) {
var clone = [];
} else {
var clone = {};
}
for (let i in obj) {
if (typeof obj[i] == 'Object' && obj[i] != null) {
clone[i] = cloneThing[obj[i]];
} else {
clone[i] = obj[i];
}
}
return clone
}
//JSON.parse(JSON.stringify())
JSON.parse(JSON.stringify(obj))