- 对象的浅拷贝: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'))
console.log(InfoIM2.get('name'))
const infoIM3 = im.fromJS(info)
console.log(infoIM3)
const name = ['lizhi', 'oneone', 'liang']
const nameIM = im.List(name)
const arrIM = nameIM.set(0,'litchi')
console.log(nameIM.get(0))
console.log(arrIM.get(0))
</script>