<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<script src="./lib/immutable.4.0.0.js"></script>
<title>不可变量</title>
</head>
<body>
<div id="app"></div>
<div id="box">
持久化数据,使用结构共享,immutable对象不可被修改,修改后返回一个新的immutable新对象
</div>
<script>
console.log( Immutable )
console.log(Immutable.version,'版本号')
// fromJS 把一个js对象转换成 immutable 对象
let imuobj = Immutable.fromJS({name:'lili',age:12,sex:'gril',hobby:['唱歌','跳舞','打豆豆']})
console.log(imuobj)
console.log(imuobj.size)
console.log(imuobj._root)
console.log(imuobj._root.entries)
console.log(imuobj._root.entries.length)</script>
</body>
</html>
Map的增删改查
// 增
// 方法一
let map1 = map.set({"other":"hello"})
console.log(map1)
// 方法二
let map2 = map.setIn(["petdog","name"],"哈士奇")
console.log(map2)
console.log(JSON.parse(JSON.stringify(map2)))
// 当对象属相是一个对象,并未该对象添加多个键值对时候
let map3 = map.setIn(["petcat","name"],"加菲猫").setIn(["petcat","color"],"花色").setIn(["petcat","sex"],"公猫")
console.log(JSON.parse(JSON.stringify(map3)))
// 删除
// 方法一
let mapdelete1 = map.delete('name')
console.log('删除方法一 : ',JSON.parse(JSON.stringify(mapdelete1))) // {age: 12}
// 方法二
let mapdelete2 = map.deleteIn(['name'])
console.log(JSON.parse(JSON.stringify(mapdelete2)))
// 删除对象的属性是对象时采用此方法比较合适
let mapdelete3 = map.deleteIn(['mather','age'])
console.log(JSON.parse(JSON.stringify(mapdelete3)))
// 修改
// 参数一:需要修改的属性名,参数二是一个函数
let mapmodify1 = map.update('name',(arg)=>{return arg="LUCY"})
console.log(JSON.parse(JSON.stringify(mapmodify1)))
let mapmodify2 = map.updateIn(['mather','height'],(arg)=>{return arg ="168CM"})
console.log(JSON.parse(JSON.stringify(mapmodify2)))
// 查询
let mapget1 = map.get('name')
console.log(mapget1) // lili
let mapget2 = map.getIn(['mather','height'])
console.log(mapget2) // 178cm