你瞅啥呢

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}都属于浅拷贝方式,好了,快点检查你的代码是否存在这种不符合期望的写法吧。

 

posted @ 2024-10-10 09:47  叶乘风  阅读(392)  评论(0)    收藏  举报