对象的浅拷贝:Object.assign或扩展运算符 对象的浅拷贝带来的问题: 从代码角度来讲,没有问题,解决了一些实际开发会出现的风险 从性能角度来说,有问题,如果对象过于庞大,这种拷贝方式会带来性能问题以及内存浪费Immutable对象 Immutable对象的特点是:只要修改了对象就会返回一个新的对象,但是旧的对象不会改变。 为了节约内存,Immutable使用了一种新的算法:Persistent Data Structure(持久化数据结构/一致性数据结构) 这里的持久化数据结构使用一种数据结构来存储数据;当数据被修改时,会返回一个对象,但新的对象会尽可能利用之前的数据结构而不会对内存造成浪费。 要做到这一点,需要利用结构共享,新的对象会尽可能利用原来的数据与结构。 官网连接:https://immutable-js.com/ // 使用 <script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/4.0.0-rc.14/immutable.min.js"></script> <script> const im = Immutable // 对象的使用 const info = { name: 'lizhi', age: 20, friend: { name: 'oneone', age: 20 } } const infoIM = im.Map(info) const obj = infoIM const InfoIM2 = infoIM.set('name', 'why') console.log(obj.get('name')) //lizhi console.log(InfoIM2.get('name')) //why const infoIM3 = im.fromJS(info) console.log(infoIM3) //t {size: 3, _root: Ce, __ownerID: undefined, __hash: undefined, __altered: false} // list的使用 const name = ['lizhi', 'oneone', 'liang'] const nameIM = im.List(name) const arrIM = nameIM.set(0,'litchi') console.log(nameIM.get(0)) //lizhi console.log(arrIM.get(0)) //litchi </script>