Если один и тот же объект, массив или другая структура изменяется в нескольких местах программы, то это может приводить к неприятным багам. Для предотвращения таких проблем часто используют защитное копирование (Defensive copying), недеструктивное изменение данных и иммутабельные данные. В статье описываются все эти подходы.
Забавно, что буквально перед тем как начать статью, я сидел и пробовал вспомнить все способы ограничения доступа к свойствам объекта. Вспомнил только про
Object.freeze и Object.seal. В статье нашёл третий забытый метод — Object.preventExtensions.Статья у Акселя получилась большой и подробной. Рекомендую почитать.
#js #immutability
https://2ality.com/2019/10/shared-mutable-state.html