美文网首页
@芥末的糖-----immutable.js

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

作者: 芥末的糖 | 来源:发表于2018-11-17 15:06 被阅读0次

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

相关文章

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

    1.immutable为什么要用? 利用这个库来实现数据的表现方式,加强数据的不可变性 JavaScript 中的...

  • @芥末的糖

    1.接下来是一段有故事的代码,如果你能看到最后,那么我相信,这些干货将会让你受益 2.要求变成//循环外:3 ...

  • @芥末的糖-----redux

    以下例子如果看不懂,就直接看总结,然后看最开始的图,然后对应代码目录结构:都在同一个目录下 1.全局注入 2.全局...

  • @芥末的糖-----PropTypes

    1.导入一个包 import PropTypes from 'prop-types' 2.使用PropTypes用...

  • @芥末的糖-----this.setState

    React通过this.state来访问state,通过this.setState来更新state。当setSta...

  • @芥末的糖-----Vuex知识

    一 1.什么是Vuex? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用...

  • @芥末的糖-----TypeScript学习

    女友御用版TS解析 优势: -增加了代码的可阅读和可维护性 安装: 一.基础类型 布尔值 数字 number 字符...

  • @芥末的糖-----fs模块

    用node实现一个检索一个目录下面所有的文件的方法

  • 单词积累之调料(1)

    ①盐:salt ②醋:vinegar ③糖:sugar ④酱油:sauce ⑤芥末:mustard ⑥葱:shal...

  • 北海道 六花亭六色酒心糖 名古屋芥末虾片 又是仙贝故里的一款明星产品,有芥末味,但是不会太刺激,鲜虾味和淡淡芥末味...

网友评论

      本文标题:@芥末的糖-----immutable.js

      本文链接:https://www.haomeiwen.com/subject/horbfqtx.html