将对象从另一个不可变的Map分配给Map是否意味着深度克隆
Does assign an object to a Map from another immutable Map mean deep cloning?
当我有两个不可变映射对象时:
const MapA = Immutable.fromJS({person: {name: 'Peter', age: 18}, parent: 'Sally'});
let MapB = Immutable.fromJS({prop1: 'testing'});
MapB = MapB.set('person', MapA.get('person'));
对象{名称:"Peter",年龄:18岁}在两个地图之间共享吗?或者有共享的方法吗?
ImmutableJS共享实例。在您的案例中,快照实例person
对于MapA和MapB都是共享的。您可以通过在该实例上添加自定义的纯JS属性来验证这一点,并对MapA版本和MapB版本进行验证。你会发现他们有相同的价值观。
给你一把小提琴。。。https://jsfiddle.net/HaZardous/0Ls5gdht/.
这是供参考的fiddle代码-
var MapA = Immutable.fromJS({person: {name: 'Peter', age: 18}, parent: 'Sally'}),
MapB = Immutable.fromJS({prop1: 'testing'}),
person = MapA.get('person');
MapB = MapB.set('person', person);
person["nationality"] = "US";
console.log("Direct ref: " + person["nationality"]);
console.log("MapA ref: " + MapA.get('person')["nationality"]);
console.log("MapB ref: " + MapB.get('person')["nationality"]);
输出
Direct ref: US
MapA ref: US
MapB ref: US
相关文章:
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- 使用map来检查是否为真'不起作用
- 这个问号在Flow中意味着什么:“;?()=>“无效”;
- 回调函数中传递参数的困难(Google Map API Markers)
- 使用API在我的网站Google-Map上显示搜索地址的纬度和经度
- 在递归生成器函数中,yield后面的*(星号/星号)语法意味着什么
- 在jQuery中使用$('body').html('')意味着什么
- How to declare a Map containing certain properties with flow
- 如何将i18n.map转换为json对象
- 使用filter和map方法将数组中某些元素的第一个字母大写-JavaScript
- 节点中的Map Reduce
- 用Jquery map和moment js制作一个简单的时间线
- 谷歌地图API v3:Initial View is Fine,but Gray Box with No Map if
- _.map在返回时覆盖值
- 鉴于 for..在构造中,库提供的函数(如 jQuery.map() 或 _.each())有什么用
- 谷歌图表弃用政策意味着
- 为什么可以't我用Set对象调用Array.prototype.map
- 在.map函数中使用react道具
- webkitTransition,这对使用Jquery的CSS-3意味着什么
- 将对象从另一个不可变的Map分配给Map是否意味着深度克隆