浅谈immutable的使用方法

在聊immutable之前我们先思考一个问题。敲代码时经常会使用深拷贝的方法,但是一般的深拷贝方法是把所有的数据节点都拷贝下来,此时没有改变的数据也会被拷贝一份。这就会造成性能的消耗。我们该如何解决性能消耗问题。

此时我们就需要一个结构共享的方案。什么是结构共享?简单来说在拷贝时,我们拷贝改变的数据节点极其父节点,而没有改变的数据我们就直接拿过来,不进行拷贝,这就是结构共享。而在项目中我们就需要immutable这个工具来实现结构共享。

Immutable数据是一个不可变数据,就是一旦创建,就不能再被更改的数据。对 Immutable 对象的任何修改或添加删除操作都会返回一个新的 Immutable 对象。Immutable 实现的原理是持久化数据结构),也就是使用旧数据创建新数据时,要保证旧数据同时可用且不变。同时为了避免 深拷贝把所有节点都复制一遍带来的性能损耗,Immutable 使用了 结构共享,即如果对象树中一个节点发生变化,只修改这个节点和受它影响的父节点,其它节点则进行共享。

下面我们来聊一下用法:

安装:

npm install immutable

使用Map

引入:

const { Map } = require('immutable');

  • 当数据为一个对象数据类型时,我们使用Map。
  • Map类似于ES6中的map。它有两个方法get和set。
  • 通过set去赋值,通过get去获取。

使用List

引入:

const { List } = require('immutable');
  • 当数据为一个数组数据类型时,我们使用List
  • 使用方法同Map
const list1 = List([1, 2]);
const list2 = list1.push(3, 4, 5);
const list3 = list2.unshift(0);
const list4 = list1.concat(list2, list3);
assert.equal(list1.size, 2);
assert.equal(list2.size, 5);
assert.equal(list3.size, 6);
assert.equal(list4.size, 13);
assert.equal(list4.get(0), 1);
//equal是用来判断内容是否相等

注意:List是拥有原生数组的所有方法的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值