-
数据的可变性引起的问题
- 没有修改obj,只是修改obj2,但最终obj也被修改掉了
- 原因很简单:两个对象指向同一块内存,两个引用都可以修改
-
解决上述问题
- 进行对象的拷贝: Object.assign或者是扩展运算符
-
上述解决方方法引起的问题
- 从性能的角度来说,如果对象过于庞大,上述办法会带来性能问题并可浪费内存
-
对上述方法引起的问题,提供解决方案
- 使用 ImmutableJS
- ImmutableJS对象的特点是只要修改对象,就会返回一个新的对象,旧对象不会发生改变
- ImmutableJS为了解决内存,出现了一种新的算法:Persistent Data Structure(持久化数据结构或者一致性数据结构)
- 用一种新的数据结构来保存数据
- 当数据被修改的时候,会返回一个对象,但是新的对象会尽可能利用之前的数据结构而不会对内存造成浪费
- 使用 ImmutableJS
immutable
数据类型是对象: Map 是浅拷贝,fromJS 是神拷贝