深拷⻉以及浅拷⻉

117 阅读1分钟

浅拷⻉: 基本数据类型的时候就是将值直接赋值给新的变量 复杂数据类型在进⾏浅拷⻉的时候就是

将栈⾥⾯的地址直接赋值给了新的变量 这个时候两个变量指向的是同⼀个地址,⼀旦地址⾥⾯的值发

⽣变化,这两个变量的值都会发⽣变化

⽅法:直接赋值


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))