001 Мутация в JavaScript
Мутация представляет из себя изменение значений посредством переназначения переменной другого значения
Изменение значения свойства и добавление нового свойства
Тут описано изменение оригинала через копию объекта
002 Как избежать мутаций объектов
Первый способ избежать мутаций – это использовать Object.assign({}, имя_объекта)
. Этот способ позволит избежать мутаций объекта без вложенных структур. На примере можно увидеть, что данные возраста остались разными, так как они находились в первой ступени объекта. Уже на второй ступени объекта ссылки в переменных всё так же продолжили ссылаться на один участок памяти
Так же вот второй вариант создания копии объекта – через оператор spread
(…
) и сборку его свойств через {}
. То есть, оператор …
разбивает объект на отдельные свойства, а { }
собирает эти свойства опять воедино и таким сбором создаётся новый объект. Однако проблема из прошлого варианта остаётся и ссылка на вложенный объект остаётся та же
И вот третий способ, который позволяет скопировать объект без шанса на мутацию. Мы парсим объект в строку и потом перепарсим в объект, что позволяет избавиться от ссылок на объект и спокойно им пользоваться