我想了解 lodash/fp 的不可变方法是如何工作的。
他们是否在更改集合之前深度克隆集合,或者是否在对象的两个版本之间实现某种结构共享?
我试图“从外部”理解它,但无法得出明确的结论。
在下面的第一种情况下,更改更新的集合不会影响原始集合。
然而,在第二种情况下,改变更新的集合确实会影响原始集合。
var fp = _.noConflict();
var data = { a: { c: {} } };
var updatedData = fp.set(["a", "c", "d"], 5, data);
updatedData.a.c.e = 9;
console.log(updatedData.a.c.e, data.a.c.e);
var data2 = { a: { c: [] } };
var updatedData2 = fp.set(["a", "d"], 5, data2);
updatedData2.a.c[0] = 9;
console.log(updatedData2.a.c[0], data2.a.c[0]);
<script src='https://cdn.jsdelivr.net/g/lodash@4.17(lodash.min.js+lodash.fp.min.js)'></script>
我还在Lodash github上发布了这个问题。
米琪卡哇伊
相关分类