gpt4 book ai didi

javascript - 从另一个不可变 Map 将对象分配给 Map 是否意味着深度克隆?

转载 作者:行者123 更新时间:2023-11-30 00:09:25 26 4
gpt4 key购买 nike

当我有两个 Immutable Map 对象时:

const MapA = Immutable.fromJS({person: {name: 'Peter', age: 18}, parent: 'Sally'});
let MapB = Immutable.fromJS({prop1: 'testing'});

MapB = MapB.set('person', MapA.get('person'));

对象 {name: 'Peter', age: 18} 是否在两个 map 之间共享或是否有共享方式?

最佳答案

ImmutableJS 共享实例。在您的例子中,快照实例 person 为 MapA 和 MapB 共享。您可以通过在此实例上添加自定义纯 JS 属性来验证这一点,并针对 MapA 版本和 MapB 版本进行验证。您会发现它们具有相同的值。

这是给你的 fiddle ... 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

关于javascript - 从另一个不可变 Map 将对象分配给 Map 是否意味着深度克隆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37128334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com