JavaScript Object.assign ()

Metode JavaScript Object.assign () kopē visus norādīto objektu uzskaitāmos īpašumus vienā objektā un atdod to.

Metodes sintakse assign()ir šāda:

 Object.assign(target,… sources)

assign()Metodi, kas ir statiska metode, sauc izmantojot Objectklases nosaukumu.

piešķirt () parametrus

assign()Metode ņem in:

  • target - mērķa objekts - kam piemērot avotu īpašības, kas tiek atgriezts pēc tā modificēšanas.
  • avoti - Avota objekts (-i) - objekti, kas satur īpašības, kuras vēlaties lietot.

Atgriezt vērtību no piešķirt ()

  • Atgriež mērķa objektu.

Piezīme. Mērķa objekta īpašības tiek pārrakstītas ar avotu īpašībām, ja tām ir viena un tā pati atslēga.

1. piemērs: Object.assign () izmantošana objektu klonēšanai un sapludināšanai

 // 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 )

Rezultāts

 (vārds: 'Alan Turing', vecums: 120) (vārds: 'Alan Turing', vecums: 120) (a: 1, b: 12, c: 23)

Šeit ņemiet vērā, ka, ja avota vērtība ir atsauce uz objektu, tā kopē tikai atsauces vērtību.

Vēlāku avotu īpašības pārraksta arī agrākās.

2. piemērs: Object.assign () izmantošana

 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 )

Rezultāts

 (c: 3) (“0”: “a”, “1”: “b”, “2”: “c”, c: 3)

Kā redzat, prototipa ķēdes īpašības un neskaitāmās īpašības nevar kopēt.

Arī primitīvi tiks iesaiņoti objektos, nulles un nedefinētie tiek ignorēti.

Tā kā tikai virknēm ir neskaitāmi īpašumi, tās tiek kopētas mērķa objektā.

Ieteicamā literatūra: Javascript Object defineProperties ()

Interesanti raksti...