https://immutable-js.github.io/immutable-js/
# Immutable collections for JavaScript
[Immutable](http://en.wikipedia.org/wiki/Immutable_object)data cannot be changed once created, leading to much simpler application development, no defensive copying, and enabling advanced memoization and change detection techniques with simple logic.[Persistent](http://en.wikipedia.org/wiki/Persistent_data_structure)data presents a mutative API which does not update the data in-place, but instead always yields new updated data.
Immutable.js provides many Persistent Immutable data structures including:
[List](https://immutable-js.github.io/immutable-js/docs/#/List),[Stack](https://immutable-js.github.io/immutable-js/docs/#/Stack),[Map](https://immutable-js.github.io/immutable-js/docs/#/Map),[OrderedMap](https://immutable-js.github.io/immutable-js/docs/#/OrderedMap),[Set](https://immutable-js.github.io/immutable-js/docs/#/Set),[OrderedSet](https://immutable-js.github.io/immutable-js/docs/#/OrderedSet) and [Record](https://immutable-js.github.io/immutable-js/docs/#/Record).
These data structures are highly efficient on modern JavaScript VMs by using structural sharing via[hash maps tries](http://en.wikipedia.org/wiki/Hash_array_mapped_trie)and[vector tries](http://hypirion.com/musings/understanding-persistent-vector-pt-1)as popularized by Clojure and Scala, minimizing the need to copy or cache data.
Immutable.js also provides a lazy [Seq](https://immutable-js.github.io/immutable-js/docs/#/Seq), allowing efficient chaining of collection methods like`map`and`filter`without creating intermediate representations. Create some [Seq](https://immutable-js.github.io/immutable-js/docs/#/Seq) with [Range](https://immutable-js.github.io/immutable-js/docs/#/Range) and [Repeat](https://immutable-js.github.io/immutable-js/docs/#/Repeat).
## Getting started
Install [immutable](https://immutable-js.github.io/immutable-js/docs/#/)using npm.
`npm install immutable`
Then require it into any module.
```js
const { Map } = require('immutable');
const map1 = Map({ a: 1, b: 2, c: 3 });
const map2 = map1.set('b', 50);
map1.get('b') + " vs. " + map2.get('b'); // 2 vs. 50`
```
- 内容介绍
- EcmaScript基础
- 快速入门
- 常量与变量
- 字符串
- 函数的基本概念
- 条件判断
- 数组
- 循环
- while循环
- for循环
- 函数基础
- 对象
- 对象的方法
- 函数
- 变量作用域
- 箭头函数
- 闭包
- 高阶函数
- map/reduce
- filter
- sort
- Promise
- 基本对象
- Arguments 对象
- 剩余参数
- Map和Set
- Json基础
- RegExp
- Date
- async
- callback
- promise基础
- promise-api
- promise链
- async-await
- 项目实践
- 标签系统
- 远程API请求
- 面向对象编程
- 创建对象
- 原型继承
- 项目实践
- Classes
- 构造函数
- extends
- static
- 项目实践
- 模块
- import
- export
- 项目实践
- 第三方扩展库
- immutable
- Vue快速入门
- 理解MVVM
- Vue中的MVVM模型
- Webpack+Vue快速入门
- 模板语法
- 计算属性和侦听器
- Class 与 Style 绑定
- 条件渲染
- 列表渲染
- 事件处理
- 表单输入绑定
- 组件基础
- 组件注册
- Prop
- 自定义事件
- 插槽
- 混入
- 过滤器
- 项目实践
- 标签编辑
- iView
- iView快速入门
- 课程讲座
- 环境配置
- 第3周 Javascript快速入门