Метод Object.assign

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

Синтаксис

javascriptObject.assign(куда копировать, объекты);

Пример

Давайте получим новый объект из исходного:

javascriptlet obj = {'a': 1, 'b': 2, 'c': 3};
let newObj = Object.assign({}, obj);
console.log(newObj);

Результат выполнения кода:

javascript{a: 1, b: 2, c: 3}

Пример

А теперь получим новый объект из нескольких исходных, перечисляя их в параметре через запятую:

javascriptlet obj1 = {'a': 1, 'b': 2};
let obj2 = {'c': 3, 'd': 4};

let newObj = Object.assign({}, obj1, obj2);
console.log(newObj);

После выполнения кода мы увидим, что два исходных объекта слились в один новый объект:

javascript{a: 1, b: 2, c: 3, d: 4}

Пример

Также метод Object.assign можно применять для получения нового массива, поскольку массив по своему типу также относится к объектам. Давайте сделаем новый массив, скопировав элементы из исходного:

javascriptlet arr = [1, 2, 3, 4];
let newArr = Object.assign([], arr);

console.log(newArr);

Результат выполнения кода:

javascript[1, 2, 3, 4]

Пример

При использовании метода Object.assign нужно внимательно придерживаться синтаксиса. К примеру, если не добавить в первый параметр целевой объект, а оставить только копируемый объект, то он и вернется обратно:

javascriptlet obj = {1:'a', 2: 'b', 3: 'c'};
let newObj = Object.assign(obj);

console.log(newObj === obj);

Результат выполнения кода:

javascripttrue

Смотрите также

  • метод Object.keys,
    который возвращает массив из свойств объекта
  • метод Object.values,
    который возвращает массив из значений объекта