2024-10-10 js 深拷贝常用方法
1、json序列化以及反序列化
let a = JSON.parse(JSON.stringify(b))
2、使用lodash库插件
没有的话先安装:
npm i lodash
使用方式:
import { cloneDeep } from 'lodash';
let a = cloneDeep(b);
ps: 我当前使用的版本是@4
为什么要使用深拷贝?因为我们在开发中会经常进行赋值运算,在你需要赋值又不想污染源数据的时候就需要重新赋值,
一开始我们以为let a = b;就能够把b的值拿过来,实际上分两种情况,如果b是原始数据类型,比如Boolean、Number、String之类的值完全可以拷贝,
而对于引用数据类型,比如object、array、function等,let a = b的写法仅会拷贝的它们的引用地址,而不会拷贝内容本身,这种情况就叫浅拷贝,
当你修改了a的值,b的值也会随之被修改,如:
let b = {
name: '123',
status: false
};
let a = b;
a.name = '456';
console.log(b.name); // 456
console.log(a.name); // 456
或者:
let b = ['1'];
let a = b;
a[0] = '45121216';
console.log(b[0]); // 45121216
console.log(a[0]); // 45121216
这个时候就需要使用深拷贝方式,json序列化以及反序列化和lodash库是比较常用且简单的方式,复杂一点可以使用递归方式处理等,
注意:[...b]和{...b}都属于浅拷贝方式,好了,快点检查你的代码是否存在这种不符合期望的写法吧。

浙公网安备 33010602011771号