Использование Object.assign в JavaScript
```htmlJS Object.assign - это метод, который используется для копирования значений всех перечисляемых свойств одного или нескольких исходных объектов в целевой объект. Этот метод обычно используется для создания поверхностной копии объекта или для объединения свойств нескольких объектов в один.
Для более понятного объяснения, рассмотрим следующий пример кода:
// Создаем исходные объекты
const sourceObj1 = { foo: 1 };
const sourceObj2 = { bar: 2 };
const targetObj = { baz: 3 };
// Копируем свойства исходных объектов в целевой объект
Object.assign(targetObj, sourceObj1, sourceObj2);
console.log(targetObj); // { baz: 3, foo: 1, bar: 2 }
В данном примере мы создаем три объекта: sourceObj1, sourceObj2 и targetObj. Объект targetObj является целевым объектом, в который мы хотим скопировать свойства других объектов. Метод Object.assign принимает целевой объект в качестве первого аргумента, а исходные объекты - в последующих аргументах.
Когда мы вызываем Object.assign(targetObj, sourceObj1, sourceObj2), метод копирует все перечисляемые свойства sourceObj1 и sourceObj2 в targetObj. После исполнения кода выводится в консоли содержимое targetObj: { baz: 3, foo: 1, bar: 2 }. В результате имеем объединение свойств всех трех объектов.
Важно отметить, что Object.assign выполняет поверхностное копирование, то есть если у исходного объекта есть свойства-объекты, то в целевом объекте он будет содержать ссылку на этот объект, а не копию объекта.
Рассмотрим другой пример:
const obj1 = { x: 10, y: 20 };
const obj2 = { x: 30, z: 40 };
const obj3 = Object.assign({}, obj1, obj2);
console.log(obj3); // { x: 30, y: 20, z: 40 }
Здесь мы создаем два исходных объекта obj1 и obj2, которые имеют общее свойство x. Затем мы создаем пустой объект и используем Object.assign для копирования свойств obj1 и obj2 в этот пустой объект. Результатом будет новый объект obj3 с объединенными свойствами { x: 30, y: 20, z: 40 }. Обратите внимание, что свойство x принимает значение из obj2, поскольку оно перетирает значение из obj1.
Кроме простого копирования свойств, Object.assign также может использоваться для добавления новых свойств в объект, объединения массивов и других операций с объектами.
Выводя всё вышеприведенное в конечном счете, мето Object.assign - это удобный способ копирования или объединения свойств объектов в JavaScript. Он позволяет нам управлять данными объекта и создавать новые объекты с необходимым набором свойств.