JavaScript Object.assign ()

Метод JavaScript Object.assign () копирует все перечисляемые собственные свойства заданных объектов в один объект и возвращает его.

Синтаксис assign()метода:

 Object.assign(target,… sources)

Этот assign()статический метод вызывается по имени Objectкласса.

assign () Параметры

assign()Метод принимает в:

  • target - Целевой объект - к чему применить свойства источников, которые возвращаются после его изменения.
  • sources - Исходный объект (ы) - объекты, содержащие свойства, которые вы хотите применить.

Возвращаемое значение из assign ()

  • Возвращает целевой объект.

Примечание. Свойства в целевом объекте перезаписываются свойствами в источниках, если они имеют одинаковый ключ.

Пример 1. Использование Object.assign () для клонирования и объединения объектов

 // cloning objects const obj = ( name: "Alan Turing", age: 120, ); let newObject = (); const copy = Object.assign(newObject, obj); // modifies the target object console.log(newObject); // returns the modified object console.log(copy); // merging objects const o1 = ( a: 1, b: 2, c: 3 ); const o2 = ( b: 12, c: 13 ); const o3 = ( c: 23 ); // Earlier source keys are overwritten by later sources const o4 = Object.assign((), o1, o2, o3); console.log(o4); // ( a: 1, b: 12, c: 23 )

Вывод

 (имя: 'Алан Тьюринг', возраст: 120) (имя: 'Алан Тьюринг', возраст: 120) (a: 1, b: 12, c: 23)

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

Кроме того, свойства более поздних источников перезаписывают более ранние.

Пример 2: Использование Object.assign ()

 const obj = Object.create( ( a: 1 ), ( // a is on obj's prototype chain. b: ( value: 2, // b is a non-enumerable property. ), c: ( value: 3, enumerable: true, // c is an own enumerable property. ), ) ); let copy = Object.assign((), obj); console.log(copy); // ( c: 3 ) copy = Object.assign(copy, "abc", 100, null); console.log(copy); // ( '0': 'a', '1': 'b', '2': 'c', c: 3 )

Вывод

 (c: 3) ('0': 'a', '1': 'b', '2': 'c', c: 3)

Как видите, нельзя скопировать свойства в цепочке прототипов и неперечислимые свойства.

Кроме того, примитивы будут перенесены в объекты, значения null и undefined игнорируются.

Поскольку перечислимым свойством обладают только строки, они копируются в целевой объект.

Рекомендуемая литература: Javascript Object defineProperties ()

Интересные статьи...