Ce face Object.assign
Object.assign copiază toate proprietățile proprii și enumerabile ale surselor în obiectul țintă, în ordine: dacă o cheie apare de mai multe ori, câștigă ultima. Obiectul țintă este modificat și returnat.
Copia este superficială: dacă o proprietate conține un obiect sau un tablou, se copiază doar referința. Pentru obiecte simple, { ...a, ...b } face același lucru și creează mereu un obiect nou.
Parametri
| Parametru | Descriere |
|---|---|
tinta |
Obiectul în care se copiază (este modificat). |
sursa1, sursa2, ... |
Obiectele din care se copiază. |
Ce returnează
Obiectul țintă.
Exemple
Exemplul 1: Setări implicite suprascrise
const implicite = { tema: "deschisă", limba: "ro", notificari: true };
const alese = { tema: "întunecată" };
const setari = Object.assign({}, implicite, alese);
console.log(setari);
console.log(implicite);
Rezultat
{ tema: 'întunecată', limba: 'ro', notificari: true }
{ tema: 'deschisă', limba: 'ro', notificari: true }
Exemplul 2: Copia este superficială
const original = { nume: "Ana", adresa: { oras: "Iași" } };
const copie = Object.assign({}, original);
copie.nume = "Maria";
copie.adresa.oras = "Cluj";
console.log(original);
Rezultat
{ nume: 'Ana', adresa: { oras: 'Cluj' } }
Greșeli frecvente
- Scrii
Object.assign(implicite, alese)și strici obiectul cu valori implicite, care devine țintă. Pune un obiect gol primul:Object.assign({}, implicite, alese). - Te bazezi pe
Object.assignpentru o copie completă. Obiectele interioare rămân comune; foloseștestructuredClone.
Comenzi înrudite
... (spread): Desface un tablou sau un obiect în elementele lui. Folosit pentru copii și combinări.structuredClone: Creează o copie completă (în adâncime) a unei valori: obiecte, tablouri, Date, Map, Set.Object.create: Creează un obiect nou care are ca prototip obiectul dat (moștenește proprietățile lui).