初识immutable

         什么是immutable?
  1. 顾名思义;永恒的,不可改变的意思
  2. 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/查看

 

posted @ 2022-03-19 14:31  疾风_剑豪  阅读(152)  评论(0编辑  收藏  举报