JavaScript Object.assign ()

Metoda JavaScript Object.assign () copiază toate proprietățile proprii enumerabile ale obiectelor date într-un singur obiect și le returnează.

Sintaxa assign()metodei este:

 Object.assign(target,… sources)

assign()Metoda, fiind o metodă statică, se numește folosind Objectnumele clasei.

assign () Parametri

assign()Metoda ia în:

  • target - Obiectul țintă - la ce să aplice proprietățile surselor, care este returnat după ce a fost modificat.
  • surse - Obiectul (sursele) sursă - obiecte care conțin proprietățile pe care doriți să le aplicați.

Returnează valoarea din assign ()

  • Returnează obiectul țintă.

Notă: Proprietățile din obiectul țintă sunt suprascrise de proprietățile din surse dacă au aceeași cheie.

Exemplul 1: Utilizarea Object.assign () pentru clonarea și îmbinarea obiectelor

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

Ieșire

 (nume: „Alan Turing”, vârstă: 120) (nume: „Alan Turing”, vârstă: 120) (a: 1, b: 12, c: 23)

Rețineți aici că dacă valoarea sursă este o referință la un obiect, aceasta copiază doar valoarea de referință.

De asemenea, proprietățile surselor ulterioare le suprascriu pe cele anterioare.

Exemplul 2: Utilizarea 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 )

Ieșire

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

După cum puteți vedea, proprietățile lanțului prototip și proprietățile care nu pot fi enumerate nu pot fi copiate.

De asemenea, primitivele vor fi înfășurate în obiecte, nul și nedefinit sunt ignorate.

Deoarece numai șirurile au proprietăți enumerabile, acestea sunt copiate în obiectul țintă.

Lectură recomandată: obiect Javascript defineProperties ()

Articole interesante...