JavaScript Object.assign () -metoden kopierer alle opptellbare egne egenskaper for gitte objekter til et enkelt objekt og returnerer det.
Syntaksen til assign()
metoden er:
Object.assign(target,… sources)
Den assign()
metoden, å være en statisk metode, kalles med Object
navn klassen.
tilordne () parametere
Den assign()
metoden tar i:
- target - Målobjektet - hva kildeegenskapene skal brukes på, som returneres etter at det er endret.
- kilder - Kilden (e) - objektene som inneholder egenskapene du vil bruke.
Returverdi fra tilordne ()
- Returnerer målobjektet.
Merk: Egenskaper i målobjektet blir overskrevet av egenskaper i kildene hvis de har samme nøkkel.
Eksempel 1: Bruk Object.assign () til å klone og slå sammen 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 )
Produksjon
(navn: 'Alan Turing', alder: 120) (navn: 'Alan Turing', alder: 120) (a: 1, b: 12, c: 23)
Merk her at hvis kildeverdien er en referanse til et objekt, kopierer den bare referanseverdien.
Også, senere kilders egenskaper overskriver tidligere.
Eksempel 2: Bruke 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 )
Produksjon
(c: 3) ('0': 'a', '1': 'b', '2': 'c', c: 3)
Som du kan se, kan ikke egenskaper på prototypekjeden og ikke-tallbare egenskaper kopieres.
Også primitiver vil bli pakket inn til objekter, null og udefinert blir ignorert.
Siden bare strenger har en uttalt eiendom, blir de kopiert til målobjektet.
Anbefalt lesing: Javascript Object defineProperties ()