JS: Объекты
Теория: Создание новых объектов и spread
Поверхностное копирование (clone) и слияние (merge) можно объединить в одну операцию. Это позволяет обновлять объекты в функциональном стиле, другими словами, мы создаем новые объекты на основе старых, вместо их обновления. Подробнее с такими задачами мы познакомимся ближе к концу профессии, когда пойдет речь про фреймворки. Ниже пример такой операции:
В современном JavaScript добавили специальный оператор, который позволяет выполнять ту же задачу немного короче и, главное, нагляднее. Он называется spread оператор (на русском его так и называют «спред-оператор»). Простое поверхностное копирование с помощью спреда:
Spread оператор – это три точки перед именем переменной (или константы), внутри определения объекта. Он раскладывает соответствующий объект внутри нового объекта. С его помощью можно получить только копию, он не может изменять существующие объекты.
С помощью spread оператора легко расширять новые объекты дополнительными данными:
Всё, что появляется с правой стороны спреда, будет иметь приоритет при слиянии, аналогично тому как работает Object.assign(). В свою очередь всё что слева — имеет более низкий приоритет:
Свойства могут одновременно появляться как слева, так и справа от этого оператора:
Сам спред оператор может использоваться в рамках одного объекта любое количество раз:
Наконец, можно объединить и новые свойства и несколько спредов вместе:




