JavaScript Object.assign ()

JavaScript Object.assign () -metoden kopierar alla uppräknade egna egenskaper för givna objekt till ett enda objekt och returnerar det.

Syntaxen för assign()metoden är:

 Object.assign(target,… sources)

Den assign()metod, som är en statisk metod, kallas med hjälp av Objectklassnamnet.

tilldela () parametrar

Den assign()metod tar in:

  • mål - Målobjektet - vad källans egenskaper ska tillämpas på, som returneras efter att det har ändrats.
  • källor - Källobjekten (objekten) - objekt som innehåller de egenskaper du vill använda.

Returvärde från tilldela ()

  • Returnerar målobjektet.

Obs! Egenskaper i målobjektet skrivs över av egenskaper i källorna om de har samma nyckel.

Exempel 1: Använd Object.assign () för att klona och slå samman objekt

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

Produktion

 (namn: 'Alan Turing', ålder: 120) (namn: 'Alan Turing', ålder: 120) (a: 1, b: 12, c: 23)

Observera här att om källvärdet är en referens till ett objekt, kopierar det bara referensvärdet.

Senare källors egenskaper skriver också över tidigare.

Exempel 2: Använda 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 )

Produktion

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

Som du kan se, kan egenskaper i prototypkedjan och ej räknbara egenskaper inte kopieras.

Primitiv kommer också att förpackas till objekt, null och odefinierad ignoreras.

Eftersom endast strängar har en mängd egendom, kopieras de till målobjektet.

Rekommenderad läsning: Javascript Object defineProperties ()

Intressanta artiklar...