数据可变形带来的问题

144 阅读1分钟
  • 数据的可变性引起的问题

    • 没有修改obj,只是修改obj2,但最终obj也被修改掉了
    • 原因很简单:两个对象指向同一块内存,两个引用都可以修改
  • 解决上述问题

    • 进行对象的拷贝: Object.assign或者是扩展运算符
  • 上述解决方方法引起的问题

    • 从性能的角度来说,如果对象过于庞大,上述办法会带来性能问题并可浪费内存
  • 对上述方法引起的问题,提供解决方案

    • 使用 ImmutableJS
      • ImmutableJS对象的特点是只要修改对象,就会返回一个新的对象,旧对象不会发生改变
      • ImmutableJS为了解决内存,出现了一种新的算法:Persistent Data Structure(持久化数据结构或者一致性数据结构)
      • 用一种新的数据结构来保存数据
      • 当数据被修改的时候,会返回一个对象,但是新的对象会尽可能利用之前的数据结构而不会对内存造成浪费
immutable

数据类型是对象: Map 是浅拷贝,fromJS 是神拷贝