Metóda JavaScript Object.assign () skopíruje všetky vymenovateľné vlastné vlastnosti daných objektov do jedného objektu a vráti ich.
Syntax assign()
metódy je:
Object.assign(target,… sources)
assign()
Metóda je statické metódy, je nazývaný pomocou Object
názov triedy.
priradiť () parametre
assign()
Metóda berie v:
- cieľ - Cieľový objekt - na čo sa majú použiť vlastnosti zdrojov, ktoré sa po zmene vrátia.
- sources - Zdrojové objekty - objekty obsahujúce vlastnosti, ktoré chcete použiť.
Vrátiť hodnotu z assign ()
- Vráti cieľový objekt.
Poznámka: Vlastnosti v cieľovom objekte sú prepísané vlastnosťami v zdrojoch, ak majú rovnaký kľúč.
Príklad 1: Použitie Object.assign () na klonovanie a zlúčenie objektov
// 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 )
Výkon
(meno: „Alan Turing“, vek: 120 rokov) (meno: „Alan Turing“, vek: 120 rokov) (a: 1, b: 12, c: 23)
Tu si všimnite, že ak je zdrojovou hodnotou odkaz na objekt, skopíruje sa iba referenčná hodnota.
Vlastnosti neskorších zdrojov tiež prepíšu tie staršie.
Príklad 2: Používanie 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 )
Výkon
(c: 3) ('0': 'a', '1': 'b', '2': 'c', c: 3)
Ako vidíte, vlastnosti reťazca prototypov a nevyčísliteľné vlastnosti nemožno kopírovať.
Primitívne objekty budú tiež zabalené do objektov, hodnoty null a undefined budú ignorované.
Pretože iba reťazce majú vymenovateľnú vlastnosť, skopírujú sa do cieľového objektu.
Odporúčané čítanie: Objekt Javascript defineProperties ()