官方文档(https://immutable-js.github.io/immutable-js/docs/#/)

有人说 Immutable 可以给 React 应用带来数十倍的提升,也有人说 Immutable 的引入是近期 JavaScript 中伟大的发明,因为同期 React 太火,它的光芒被掩盖了。这些至少说明 Immutable 是很有价值的,下面我们来一探究竟。

JavaScript 中的对象一般是可变的(Mutable),因为使用了引用赋值,新的对象简单的引用了原始对象,改变新的对象将影响到原始对象。如 foo={a: 1}; bar=foo; bar.a=2 你会发现此时 foo.a 也被改成了 2。虽然这样做可以节约内存,但当应用复杂后,这就造成了非常大的隐患,Mutable 带来的优点变得得不偿失。为了解决这个问题,一般的做法是使用 shallowCopy(浅拷贝)或 deepCopy(深拷贝)来避免被修改,但这样做造成了 CPU 和内存的浪费。

Immutable 可以很好地解决这些问题。

什么是 IMMUTABLE DATA

Immutable Data 就是一旦创建,就不能再被更改的数据。对 Immutable 对象的任何修改或添加删除操作都会返回一个新的 Immutable 对象。Immutable 实现的原理是 Persistent Data Structure(持久化数据结构),也就是使用旧数据创建新数据时,要保证旧数据同时可用且不变。同时为了避免 deepCopy 把所有节点都复制一遍带来的性能损耗,Immutable 使用了 Structural Sharing(结构共享),即如果对象树中一个节点发生变化,只修改这个节点和受它影响的父节点,其它节点则进行共享。

immutable提供了get和set方法

https://www.cnblogs.com/3body/p/6224010.html

最新文章

  1. G将军的敢死队——树状DP
  2. Table of Contents ---BCM
  3. 如何在两个activity之间传递bitmap
  4. Outlook Web App简介
  5. P6 EPPM R16.1安装与配置指南(三)
  6. Xcode6.4注册URL Scheme步骤详解
  7. HDU 1247 Hat’s Words(map,STL,字符处理,string运用)
  8. 一道模板元编程题源码解答(replace_type)
  9. GetSystemMetrics() 函数的用法
  10. 运用JavaScript构建你的第一个Metro式应用程序(on Windows 8)(一)
  11. 初识Dubbo 系列之4-Dubbo 依赖
  12. sql server统计字段的值在某些范围内中的个数
  13. poj 3628 Bookshelf 2 基本01背包
  14. linux系统日常管理复习题讲解
  15. 每CPU变量
  16. day8-基础函数的学习(三)
  17. PCA降维参数介绍
  18. Swift - 修改导航栏“返回”按钮文字和图标 /手势冲突解决/响应范围
  19. IndexDB 操作util
  20. Archlinux软件包管理pacman基本使用说明

热门文章

  1. MicroK8S 安装 修改IP 设置镜像加速 升级 卸载等
  2. centos部署golang环境
  3. spring切面-单线程简单权限判定
  4. 02-多任务-thread
  5. Pytorch入门中 —— 搭建网络模型
  6. Linux 01 计算机硬件之冯诺依曼体系
  7. [BUUCTF]PWN——wustctf2020_closed
  8. 对ORM的理解
  9. TensorFlow.NET机器学习入门【2】线性回归
  10. MySQLs数据库建外键时自动跑到缩影处,真奇怪