JS: Объекты
2026-02-26 17:10 Diff

Поверхностное копирование (clone) и слияние (merge) можно объединить в одну операцию. Это позволяет обновлять объекты в функциональном стиле, другими словами, мы создаем новые объекты на основе старых, вместо их обновления. Подробнее с такими задачами мы познакомимся ближе к концу профессии, когда пойдет речь про фреймворки. Ниже пример такой операции:

В современном JavaScript добавили специальный оператор, который позволяет выполнять ту же задачу немного короче и, главное, нагляднее. Он называется spread оператор (на русском его так и называют «спред-оператор»). Простое поверхностное копирование с помощью спреда:

Spread оператор – это три точки перед именем переменной (или константы), внутри определения объекта. Он раскладывает соответствующий объект внутри нового объекта. С его помощью можно получить только копию, он не может изменять существующие объекты.

С помощью spread оператора легко расширять новые объекты дополнительными данными:

Всё, что появляется с правой стороны спреда, будет иметь приоритет при слиянии, аналогично тому как работает Object.assign(). В свою очередь всё что слева — имеет более низкий приоритет:

Свойства могут одновременно появляться как слева, так и справа от этого оператора:

Сам спред оператор может использоваться в рамках одного объекта любое количество раз:

Наконец, можно объединить и новые свойства и несколько спредов вместе: