Immutable学习

Immutable

为什么要使用Immutable

  1. JS使用引用赋值,新的对象简单引用了原始对象,改变新对象将会影响到原始对象。
  2. 使用深拷贝和浅拷贝会导致内存和CPU的浪费。

Immutable优势

  1. Immutable对象进行修改、添加、删除的操作都会返回一个新的对象,同时保持旧对象可用且不变。
  2. 为了避免深拷贝把所有节点都复制一遍带来的性能损耗,Immutable使用结构共享,即:如果对象树中一个节点发生变化,只修改这个节点和受他影像的父节点,其他节点进行共享。

API介绍

  1. fromJS(value, converter)
    是将一个JS数据转化为Immutable类型的数据。value是要转变的数据,converter是要做的操作。 默认会将数组转化为List类型,将对象转换为Map类型,其余不作操作。
  1. value.toJS()
    将一个Immutable数据转换为Js类型的数据。

  2. is(map1, map2)
    js中比较两个对象的地址,在Immutable中比较的是这个对象的hashCodevalueOf,只要两个对象的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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,918评论 18 399
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,709评论 1 32
  • 2018/1/31 一周没写了,觉得好漫长,不对位,不对频,连美拍多数时候都不能看的人…变化太快,能量转动不足,整...
    扶摇万事屋阅读 242评论 0 0
  • 随拍照 随拍照 ...
    三荷听雨声阅读 153评论 0 2
  • 今天的天气晴朗,太阳当空照,花儿对我笑。在四川能有机会见到大太阳的时间不是很多,然而我们是多么的幸运,今天的太阳红...
    脑不二阅读 189评论 0 0

友情链接更多精彩内容