- 前言
在JS中因为使用了引用复制,所以其对象是可变的(Mutable),新的对象只是简单的引用原始的对象,改变心的对象将影响到原来的对象。引用对象的优点是可以节省内存,但当应用复杂之后就会照常非常大的隐患。此时我们通常的做法是使用shallowCopy或者deepCopy来避免对象别修改,这样做造成了CPU和内存的浪费。所Immutable出现了。 - Immutable基础知识
Immutable的特点是,一但被创建就不能被修改。对immutable对象的修改都将返回一个新的immutable对象。三大特征: 持久化数据结构、结构共享、惰性操作
优点:
1、Immutable降低了Mutable带来的复杂度
在不查看 touchFn 的代码的情况下,因为不确定它对 data 做了什么,你是不可能知道会打印什么(这 不是废话吗)。但如果 data 是 Immutable 的呢,你可以很肯定的知道打印的是 value。function touchAndLog(touchFn) { let data = { key: 'value' }; touchFn(data); console.log(data.key); // 猜猜会打印什么? }
2、节省内存
Immutable使用的结构共享会尽可能复用内存
在上面的代码中a和b共享了没有变化的节点userIdlet a = immutable.Map({name: 'lta', userId: '890425'}) let b = a.set('name', 'xtt') a === b //false a.get('name') === b.get('name') // false a.get('userId') === b.get('userId') // true
缺点:
1、需要学习新的API
2、增加了资源文件的大小
3、容易与原生对象混淆
React中使用Immutable
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
- 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...