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) (а: 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)

Як бачите, властивості ланцюжка прототипів та незліченні властивості неможливо скопіювати.

Крім того, примітиви будуть обертатися до об'єктів, нульові та невизначені ігноруватимуться.

Оскільки лише рядки мають незліченну кількість властивостей, вони копіюються в цільовий об'єкт.

Рекомендуємо прочитати: Javascript Object defineProperties ()

Цікаві статті...