初识immutable
什么是immutable?
- 顾名思义;永恒的,不可改变的意思
- immutable是一种持久化数据,一旦被创就不会改变。修改immutable对象的时候返回新的immutable,但原数据不会改变。
为什么要使用使用immutable嘞?
相信大家都有写过对象的深拷贝,深拷贝对性能消耗是很大的(用到了递归呀,逐层拷贝每个节点)。但是使用immutable数据的时候,只会拷贝我们改变的节点,从而达到性能优化
使用场景:比如我司就有这样的场景,用户编辑了一写东西,然后又不想要了,就给了一个撤销的功能,也可以理解为回退到上一步。这时就用到了immutable.js
常用的api
fromJS()
用于将一个js对象转换为immutable类型的数据
immutable.fromJS(value,converter), value是要转变的数据(必填),converter是要做的操作(非必要,默认情况为List类型转为Map类型),其余不做操作
toJS()
用于immutable数据转为JS类型数据,obj.toJS()
is()
将两个对象进行比较
let _immutable1 = immutable.fromJS(obj1);
let _immutable2 = immutable.fromJS(obj2);
immutable.is(_immutable1 ,_immutable2); 返回布尔值
和js中对象比较不同,在js中比较两个对象是比较地址;
但是在immutable中比较的是这个对象的hashCode和valueOf,只有两个对象的hashCode相等,值就是相同的,避免了深度遍历,提高了性能
更多方法或如何在项目中引入,可以自行去https://immutable-js.com/查看