JavaScript Object.assign ()

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

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

 Object.assign(target,… sources)

В assign()метода, който е статичен метод, се нарича използване на Objectимето клас.

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

В assign()метода се в:

  • target - целевият обект - към какво да приложим свойствата на източниците, който се връща след модифицирането му.
  • източници - обект (и) източник - обекти, съдържащи свойствата, които искате да приложите.

Връща стойност от 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 )

Изход

 (име: „Alan Turing“, възраст: 120) (име: „Alan Turing“, възраст: 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)

Както можете да видите, свойствата на веригата прототип и неизброими свойства не могат да бъдат копирани.

Също така примитивите ще бъдат обвити в обекти, нулевите и недефинираните се игнорират.

Тъй като само низовете имат изброени свойства, те се копират в целевия обект.

Препоръчително четене: Javascript Object defineProperties ()

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