谈谈你对immutable.js的理解?

Immutable.js


通过Immutable.js创建的数据我们称为Immutable Data,Immutable Data一旦创建,就不可再更改,对其进行的添加,修改,删除操作都会生成一个新的Immutable Data。Immutable保证了就数据的可用且不变,同时为了避免深浅拷贝对性能消耗,immatable采用了结构共享,也就是对对象树的一个节点进行修改,只会修改该节点以及该节点的父级,其他节点则进行共享。
 

Immutable的优缺点

优点

1.降低了可变带来的复杂度

function testFn(){
    let data={type:'string'};
    someFn(data);
    console.log(data)
}

在不查看someFn的代码时,我们是不会知道someFn内部会对data对什么处理,但是如果data是个immutableData的话,那会很明显,data的值是不会发生变化。

2.节省内存

immutable使用结构共享时会尽量做到内存共享

3、开发撤销回退功能将会很简单
由于每次修改数据,都会生成一个不同的对象。只需要将每一步操作后的数据存起来,回退的时候取出即可。

缺点

immutable的最大问题是比较容易与js的原生对象混淆,同时许多操作都与js中的处理原生对象的不同,例如immutable中使用map,list分别表示object和array,而在map中获取到值,需要使用map.get(key)

设定值,需要使用map.set(key,value)

并且每次修改时都会生成新的对象,按照js的习惯,可能会忘记赋值操作。另外有些第三方库需要使用js的原生对象,可能会忘记进行类型转换。

immutable.js

两个immutable对象就算值完全一样,存放的内存地址也不一样,因此使用===对比时仍然会输出false。可以使用Immutable.is方法对比。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值