淺拷貝
//首先聲明一個(gè)對(duì)象
const obj = {
a: '123',
b: {
name: 'obj'
}
}
const objAAA = Object.assign({}, obj);
objAAA.a = 'AAA';
objAAA.b.name = "objAAA"
const objBBB = Object.assign({}, obj);
objBBB.a = 'BBB';
objBBB.b.name = "objBBB"
console.log(objAAA);
// const obj = {
// a: 'AAA',
// b: {
// name: 'objBBB'
// }
// }
console.log(objBBB);
// const obj = {
// a: 'BBB',
// b: {
// name: 'objBBB'
// }
// }
//結(jié)論: b.name 內(nèi)容相等笨腥,說(shuō)明Object.assign無(wú)法拷貝深層次內(nèi)容,適用于淺層拷貝。
深拷貝
//首先聲明一個(gè)對(duì)象
const obj = {
a: '123',
b: {
name: 'obj'
}
}
const objAAA = JSON.parse(JSON.stringify(obj));
objAAA.a = 'AAA';
objAAA.b.name = "objAAA"
const objBBB = JSON.parse(JSON.stringify(obj));
objBBB.a = 'BBB';
objBBB.b.name = "objBBB"
console.log(objAAA);
// const obj = {
// a: 'AAA',
// b: {
// name: 'objAAA'
// }
// }
console.log(objBBB);
// const obj = {
// a: 'BBB',
// b: {
// name: 'objBBB'
// }
// }
//將源對(duì)象轉(zhuǎn)換為字符串,再轉(zhuǎn)換為新對(duì)象解決了深層次拷貝的問(wèn)題,但對(duì)象中的 (Function 和 undefined) 無(wú)法拷貝。
先列舉兩個(gè)我覺(jué)得最簡(jiǎn)單的拷貝方法吧描融,還有函數(shù)深拷貝后續(xù)補(bǔ)充