@芥末的糖-----immutable.js

1.immutable为什么要用?

利用这个库来实现数据的表现方式,加强数据的不可变性

JavaScript 中的对象一般是可变的(Mutable),因为使用了引用赋值,新的对象简单的引用了原始对象,改变新的对象将影响到原始对象。如

 foo={a: 1};
 bar=foo;
 bar.a=2
 console.log( foo.a )//2

虽然这样做可以节约内存,但当应用复杂后,这就造成了非常大的隐患,简单的说当数据结构复杂,数量多时,使用immutable,当数据较少的时候,**一般的做法是使用下面几种方法实现 **

1.1es6-Object.assign()方法

深复制只有一层,之后为浅复制(除非嵌套)

var obj = {a:1}
var obj1 = {b:2}
var obj2 =Object.assign(obj,obj1)
console.log(obj2)//{a: 1, b: 2}

1.2使用ES7中的扩展运算符

var obj = {a:1}
var obj1 = {b:2}
var  obj2=Object.assign(obj,obj1)
//...尽量使用这样的赋值形式
obj={...obj,a:2}
console.log(obj)//{a: 2, b: 2}
console.log(obj2)//{a: 1, b: 2}
var obj = {a:1}
var obj1 = {b:2}
var  obj2=Object.assign(obj,obj1)
//避免使用,这种方法赋值
obj.a=2
console.log(obj)//{a: 2, b: 2}
console.log(obj2)//{a: 2, b: 2}

1.3JQuery的extend

let newObj = $.extend(true,{},partcontent);

2.什么是 Immutable Data

Immutable库是Facebook公司的一个开源软件库。我们使用redux-immutable模块将这个库整合进我们的程序,这样我们就能以Immutable库提供的数据类型来存储程序状态(app state)了。

Immutable Data 就是一旦创建,就不能再被更改的数据。不可变数据是[面向功能编程的核心概念,这种概念在JavaScript中的应用已渐占优势。使用React框架和Redux库时,不可变数据能帮助巩固这两者的核心原则:如果程序状态(app state)没有发生改变,那网页的文档对象模型(DOM)也不用改变。

Immutable 实现的原理是 Persistent Data Structure(持久化数据结构),也就是使用旧数据创建新数据时,要保证旧数据同时可用且不变。同时为了避免 deepCopy 把所有节点都复制一遍带来的性能损耗,Immutable 使用了 Structural Sharing(结构共享),即如果对象树中一个节点发生变化,只修改这个节点和受它影响的父节点,其它节点则进行共享。

3.Immutable 的几种数据类型

https://segmentfault.com/a/1190000010676878

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 翅膀是我的悲剧 把我带进永恒的异乡 那就上路吧 我寻找城市最破的塔 我寻找城市最亮的光 我经过城市最老的路 我看见...
    温柔鲸阅读 554评论 2 6
  • 那一树花开的静谧, 你在树下看着书, 我在书下望着你。
    洺小仙儿阅读 259评论 0 0
  • 紫煊: 我亲爱的宝贝! 这两天妈妈在石景山培训,因为你昨天早上依依不舍的说“妈妈,如果你能搭同事的车回...
    窚煊阅读 259评论 0 1

友情链接更多精彩内容