【发布时间】:2021-07-22 13:16:30
【问题描述】:
Immutable.List 似乎不会阻止您将其视为可变数组:
const Immutable =require( 'immutable');
const l = Immutable.List([1,2,3,4,5]);
l[4] = 9;
console.log(l[4], l.get(4)) // outputs 9, 5
这似乎令人惊讶,并且似乎没有在文档中解决。
我在这里误解了什么?我曾想象 Immutable.JS 以某种方式保护您免受变异的影响,但我认为它需要您坚持定义的 API 才能获得这些好处?
【问题讨论】:
-
我不使用 Immutable,但您在这里所做的是向返回的对象添加属性 4。你能不能试试
Object.freeze(l),。是的,我假设你需要做l.get().. Immutable 不太可能返回一个数组,据我记得在 Javascript 中扩展 Array 类型有一些历史问题。 -
哦...我没想到。您可以在任何对象上执行 x[4]=9,即使是不是数组的对象,嗯。随时将您的评论作为答案。
标签: javascript immutability immutable.js