JavaScript Object.assign ()

De JavaScript-methode Object.assign () kopieert alle opsombare eigen eigenschappen van bepaalde objecten naar een enkel object en retourneert dit.

De syntaxis van de assign()methode is:

 Object.assign(target,… sources)

De assign()methode, die een statische methode is, wordt aangeroepen met behulp van de Objectklassenaam.

toewijzen () Parameters

De assign()methode omvat:

  • target - Het doelobject - waarop de eigenschappen van de bron moeten worden toegepast, dat wordt geretourneerd nadat het is gewijzigd.
  • sources - Het bronobject (en) - objecten die de eigenschappen bevatten die u wilt toepassen.

Retourwaarde van assign ()

  • Geeft het doelobject terug.

Opmerking: Eigenschappen in het doelobject worden overschreven door eigenschappen in de bronnen als ze dezelfde sleutel hebben.

Voorbeeld 1: Object.assign () gebruiken om objecten te klonen en samen te voegen

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

Uitvoer

 (naam: 'Alan Turing', leeftijd: 120) (naam: 'Alan Turing', leeftijd: 120) (a: 1, b: 12, c: 23)

Merk hier op dat als de bronwaarde een verwijzing naar een object is, deze alleen de referentiewaarde kopieert.

Ook overschrijven de eigenschappen van latere bronnen de eerdere.

Voorbeeld 2: Object.assign () gebruiken

 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 )

Uitvoer

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

Zoals u kunt zien, kunnen eigenschappen in de prototypeketen en niet-opsombare eigenschappen niet worden gekopieerd.

Ook worden primitieven verpakt in objecten, null en ongedefinieerd worden genegeerd.

Omdat alleen strings een opsombare eigenschap hebben, worden ze naar het doelobject gekopieerd.

Aanbevolen literatuur: Javascript-object defineProperties ()

Interessante artikelen...