Уточняющий фрагмент из документов:
Неизменяемость делает отслеживание изменений дешевым. Изменение всегда приводит к созданию нового объекта, поэтому нам нужно только проверить, изменилась ли ссылка на объект. Например, в этом обычном коде 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
изменилось.