js——关于对象的深浅拷贝(浅拷贝Object.assign和深拷贝_.cloneDeep(obj)
warning:
这篇文章距离上次修改已过187天,其中的内容可能已经有所变动。
浅拷贝和深拷贝是在处理对象和数组时的两种不同方式。浅拷贝复制了对象的引用,而深拷贝则创建了一个新的对象和它所有嵌套的对象的副本。
JavaScript中实现深浅拷贝的方法有很多种,以下是两种常见的方法:
- 使用
Object.assign()
进行浅拷贝
let obj = { a: 1, b: 2 };
let shallowCopy = Object.assign({}, obj);
console.log(shallowCopy); // { a: 1, b: 2 }
- 使用
lodash
的_.cloneDeep()
进行深拷贝
首先需要安装lodash
库:
npm install lodash
然后在代码中引入并使用_.cloneDeep()
:
const _ = require('lodash');
let obj = { a: 1, b: { c: 3 } };
let deepCopy = _.cloneDeep(obj);
console.log(deepCopy); // { a: 1, b: { c: 3 } }
浅拷贝不会复制对象内部的对象,所以如果原始对象中嵌套了对象,浅拷贝后,原始对象和拷贝对象的嵌套对象将指向同一个内存地址。
深拷贝会创建一个新的对象,并且复制对象内部的所有对象,新对象和原始对象内部的对象将指向不同的内存地址。
评论已关闭