Поясняващ фрагмент от документите:
Неизменността прави проследяването на промените евтино. Промяната винаги ще доведе до нов обект, така че трябва само да проверим дали препратката към обекта е променена. Например в този обикновен JavaScript код:
const x = { foo: "bar" }; const y = x; y.foo = "baz"; x === y; // true
Въпреки че
y
е редактиран, тъй като е препратка към същия обект катоx
, това сравнение връщаtrue
. Можете да напишете подобен код с immutable.js:
const SomeRecord = Immutable.Record({ foo: null }); const x = new SomeRecord({ foo: 'bar' }); const y = x.set('foo', 'baz'); x === y; // false
В този случай, тъй като при мутиране на
x
се връща нова препратка, можем спокойно да предположим, чеx
се е променило.