© 2024 WebHive

Javascript - отличный способ клонирования объектов

Уверен, в жизни любого js программиста рано или поздно возникает потребность в клонировании объекта. Основная проблема при этом — иммутабельность или неизменяемость. Или попросту говоря клонировать нужно так, чтобы нам вернулся новый объект, а не модифицированный оригинал.

Классический Object.assign несмотря на простоту таким свойством не обладает. В общем-то традиционно для этого приходилось выкручиваться или сторонними библиотеками или копипастить с интернета монстроидальные функции или на худой конец говнокодить самому.

Сравнительно неплохим методом был старый добрый JSON.parse(JSON.stringify(x)), но несмотря на лаконичность на этот лютый оверхед я не могу смотреть без боли.

Наконец спасибо ES6 у нас появился оператор spread (это то самое троеточие перед переменной), с помощью которого мы можем клонировать объекты малой кровью и предельно лаконично — примерно так

const clone = { ...original }

Можно даже сразу добавить/обновить свойство

const clone = { ...original, prop: newOne }

И это прекрасно!

Подсмотрено тут

Комментарии