JavaScript Object.assign ()

JavaScript Object.assign () -metoden kopierer alle optællbare egne egenskaber for givne objekter til et enkelt objekt og returnerer det.

Metodens syntaks assign()er:

 Object.assign(target,… sources)

Den assign()metode, som er en statisk metode, der kaldes ved hjælp af Objectnavnet klassen.

tildel parametre ()

Den assign()metode tager i:

  • target - Målobjektet - hvad kildernes egenskaber skal anvendes på, som returneres, efter at det er ændret.
  • kilder - kildeobjekterne - objekter, der indeholder de egenskaber, du vil anvende.

Returneringsværdi fra tildel ()

  • Returnerer målobjektet.

Bemærk: Egenskaber i målobjektet overskrives af egenskaber i kilderne, hvis de har den samme nøgle.

Eksempel 1: Brug Object.assign () til at klone og flette objekter

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

 (navn: 'Alan Turing', alder: 120) (navn: 'Alan Turing', alder: 120) (a: 1, b: 12, c: 23)

Bemærk her, at hvis kildeværdien er en reference til et objekt, kopieres det kun referenceværdien.

Senere kilders egenskaber overskriver også tidligere.

Eksempel 2: Brug af 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 egenskaber på prototypekæden og ikke-tællbare egenskaber ikke kopieres.

Primitiver vil også blive pakket ind i objekter, null og udefineret ignoreres.

Da kun strenge har en række egenskaber, bliver de kopieret til målobjektet.

Anbefalet læsning: Javascript Object defineProperties ()

Interessante artikler...