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}都属于浅拷贝方式,好了,快点检查你的代码是否存在这种不符合期望的写法吧。
标签:10,console,name,js,2024,let,拷贝,序列化,log From: https://www.cnblogs.com/iuniko/p/18455664