"Immutable данные в JS приложениях", Дмитрий Кунин, MoscowJS 20
- 18. Мутирующие объекты могут мутировать
:)))
varidentity="Федор";
...
identity="ФедорПетрович";
...
identity="Косой";
18 / 45
- 22. "Грязная" проверка Грязные танцы
varuserData={
dirty:false,
_raw:{name:"ФедорПетрович",
online:true,
profilePic:"/url/user1.png"},
get:function(key){
returnthis._raw[key]
},
set:function(key,newValue){
this._raw[key]=newValue;
this.dirty=true;
}
}
22 / 45
- 25. Сравнение Immutable объектов / списков
varuser1=Immutable.Map({
name:"ФедорПетрович",
online:true,
profilePic:"/url/user1.png"});
25 / 45
- 26. Сравнение Immutable объектов / списков
varuser1=Immutable.Map({
name:"ФедорПетрович",
online:true,
profilePic:"/url/user1.png"});
varuser2=user1.set("name","Косой");
console.log(Immutable.is(user1,user2));//false
26 / 45
- 27. Сравнение Immutable объектов / списков
varuser1=Immutable.Map({
name:"ФедорПетрович",
online:true,
profilePic:"/url/user1.png"});
varuser2=user1.set("name","Косой");
console.log(Immutable.is(user1,user2));//false
varuser3=user2.set("name","ФедорПетрович");
console.log(Immutable.is(user1,user3));//true
27 / 45
- 40. Принимает и возвращает обычные JS
объекты
varuser1=Immutable.Map({
name:"ФедорПетрович",
online:true,
profilePic:"/url/user1.png"});
varstat ={name:"Косой",age:37};
varuser2=user1.merge(stat);
console.log(user2.toJS())
//{name:"Косой",
// online:true,
// profilePic:"/url/user1.png",
// age:37} 40 / 45