JavaScript Object.assign ()

Il metodo JavaScript Object.assign () copia tutte le proprietà enumerabili di determinati oggetti in un singolo oggetto e lo restituisce.

La sintassi del assign()metodo è:

 Object.assign(target,… sources)

Il assign()metodo, essendo un metodo statico, viene chiamato utilizzando il Objectnome della classe.

parametri assign ()

Il assign()metodo comprende:

  • target - L'oggetto di destinazione - a cosa applicare le proprietà delle sorgenti, che viene restituito dopo che è stato modificato.
  • sorgenti - Gli oggetti sorgente - oggetti contenenti le proprietà che desideri applicare.

Valore restituito da assign ()

  • Restituisce l'oggetto di destinazione.

Nota: le proprietà nell'oggetto di destinazione vengono sovrascritte dalle proprietà nelle origini se hanno la stessa chiave.

Esempio 1: utilizzo di Object.assign () per clonare e unire oggetti

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

Produzione

 (nome: 'Alan Turing', età: 120) (nome: 'Alan Turing', età: 120) (a: 1, b: 12, c: 23)

Notare qui che se il valore di origine è un riferimento a un oggetto, copia solo il valore di riferimento.

Inoltre, le proprietà delle sorgenti successive sovrascrivono quelle precedenti.

Esempio 2: utilizzo di 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 )

Produzione

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

Come puoi vedere, le proprietà sulla catena del prototipo e le proprietà non enumerabili non possono essere copiate.

Inoltre, le primitive verranno inserite negli oggetti, mentre null e undefined vengono ignorati.

Poiché solo le stringhe hanno proprietà enumerabili, vengono copiate nell'oggetto di destinazione.

Letture consigliate: oggetto Javascript defineProperties ()

Articoli interessanti...