源码笔记-Immer.js

吐槽君 分类:javascript

介绍

生成不可变数据结构,与深拷贝相比效率更高(只改变发生改动的部分及其父节点,未改动的部分让然保持引用关系)

v2-2b4c801a7b40eefcd4ee6767fb984fdf_b.gif

使用

immerjs.github.io/immer/

时序图

immer.jpg

知识点

  • Proxy.revocable
    • Proxy.revocable()方法可以用来创建一个可撤销的代理对象。该方法的返回值是一个对象,其结构为:{"proxy": proxy, "revoke": revoke} revoke 是一个撤销方法,一旦某个代理对象被撤销,它将变的几乎完全不可用,在它身上执行任何的可代理操作都会抛出TypeError异常
  • const vs Object.freeze
    • const: 变量不可更改,但是变量的值可更改
    • Object.freeze 冷冻对象,忽略外界对对象的任何改动
const alligator = {
  canItFly : false
};

Object.freeze(alligator);
alligator.canItFly = true; // This is ignored
alligator = {pi: 3.14}; // This will throw an TypeError
 

回复

我来回复
  • 暂无回复内容