Immutable
为什么要使用Immutable
-
JS
使用引用赋值,新的对象简单引用了原始对象,改变新对象将会影响到原始对象。
- 使用深拷贝和浅拷贝会导致内存和CPU的浪费。
Immutable
优势
- 对
Immutable
对象进行修改、添加、删除的操作都会返回一个新的对象,同时保持旧对象可用且不变。
- 为了避免深拷贝把所有节点都复制一遍带来的性能损耗,
Immutable
使用结构共享,即:如果对象树中一个节点发生变化,只修改这个节点和受他影像的父节点,其他节点进行共享。
API介绍
-
fromJS(value, converter)
是将一个JS
数据转化为Immutable
类型的数据。value
是要转变的数据,converter
是要做的操作。 默认会将数组转化为List
类型,将对象转换为Map
类型,其余不作操作。
-
value.toJS()
将一个Immutable
数据转换为Js
类型的数据。
-
is(map1, map2)
js
中比较两个对象的地址,在Immutable
中比较的是这个对象的hashCode
和valueOf
,只要两个对象的hashCode
相等,值就相同,避免深度遍历,提高性能。
import Immutable from 'immutable';
const m1 = Immutable.fromJS({ a: '1', b: '2' });
const m2 = Immutable.fromJS({ a: '1', b: '2' });
console.log('m1', m1 === m2); // false
console.log('m2', Immutable.is(m1, m2)); // true
网友评论