浅拷贝意思就是一个对象里面要么提交的时候用来合并,要么编辑的时候,修改数据,如果点击取消的时候,还是会恢复到原来的那样。那深拷贝意思就是对象它里面是嵌套的,嵌套2,3,4层,这种都用深拷贝。
浅拷贝的话就两种,一种是复制对象Object.assign(),第二种就是对象展开({...obj})
const original = { a: 1, b: 2 };
const copy = Object.assign({}, original);
//合并
const merged = Object.assign({}, obj1, obj2, obj3);
//对象展开运算符
const original = { a: 1, b: 2 };
const copy = { ...original };
//支持合并多个对象:
const merged = { ...obj1, ...obj2, ...obj3 };
深拷贝最常用的方式是使用 Lodash 的 _.cloneDeep()
import { cloneDeep } from 'lodash-es';
// 推荐按需引入
const original = {
name: '张三',
age: 30,
address: { city: '北京' },
hobbies: ['读书'],
fn: () => console.log('hello'),
date: new Date(),
regex: /abc/g };
const deepCopy = cloneDeep(original); // 修改嵌套属性完全不影响原对象 deepCopy.address.city = '上海';
deepCopy.hobbies.push('游泳');
console.log(original.address.city); // '北京'
console.log(original.hobbies); // ['读书']