对象的深浅拷贝

浅拷贝

//首先声明一个对象 
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'
//   }
// }

//结论: b.name 内容相等,说明Object.assign无法拷贝深层次内容,适用于浅层拷贝。

深拷贝

//首先声明一个对象 
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'
//   }
// }

//将源对象转换为字符串,再转换为新对象解决了深层次拷贝的问题,但对象中的 (Function 和 undefined) 无法拷贝。

先列举两个我觉得最简单的拷贝方法吧,还有函数深拷贝后续补充

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容