rezumat: în acest tutorial, veți învăța cum să copiați obiecte în JavaScript, inclusiv copie superficială și copiere profundă., Pentru a copia un obiect în JavaScript, ai trei optiuni:

  1. Utilizarea răspândirea (...) sintaxa
  2. Utilizare Object.assign() metoda
  3. Utilizare JSON.stringify() și JSON.parse() metode

următor ilustrează modul de a copia un obiect, folosind cele trei metode de mai sus:

Ambele răspândit (...) și Object.assign() efectuați o copie superficială, în timp ce JSON metode de a transporta o copie profundă.

copie superficială vs., copiere profundă

în JavaScript, utilizați variabile pentru a stoca valori care pot fi primitive sau referințe. Când faceți o copie a unei valori stocate într-o variabilă, creați o nouă variabilă cu aceeași valoare. Pentru o valoare primitivă, utilizați pur și simplu o simplă atribuire:

Code language: JavaScript (javascript)

și când modificați valoarea variabilei copiate, valoarea originalului rămâne aceeași.

Code language: JavaScript (javascript)

Ieșire:

cu toate Acestea, dacă utilizați operatorul de atribuire pentru o valoare de referință, aceasta nu va copia valoarea., În schimb, ambele variabile se va referi la același obiect în memorie:

Code language: JavaScript (javascript)

Și atunci când accesul la obiect prin intermediul nouă variabilă (copiedPerson) și modificați valoarea proprietății sale (numele), modificați valoarea proprietății obiectului.

Code language: JavaScript (javascript)

Ieșire:

Code language: CSS (css)

O profundă copierea înseamnă că valoarea nouă variabilă este deconectat de la original variabilă în timp ce o copie superficială înseamnă că unele valori sunt încă conectate la variabila originală.,

exemplu de copiere superficială

luați în considerare următorul exemplu:

în acest exemplu:

  • mai întâi, creați un obiect nou numitperson.
  • în al doilea rând, clonați obiectul personfolosind metoda Object.assign().
  • în al treilea rând, schimbați prenumele și informațiile despre adresă ale obiectului copiedPerson.,

Aici este de ieșire:

cu toate Acestea, atunci când arată valorile de persoană, obiect, veți găsi că informațiile de adresă schimbat, dar primul nume:

Code language: JavaScript (javascript)

Ieșire:

motivul este că adresa este valoarea de referință în timp ce primul nume este o primitivă valoare. Ambele person și copiedPerson referințe de obiecte diferite, dar aceste obiecte de referință același address obiecte.,

copie Profundă exemplu

următorul fragment înlocuiește Object.assign() metoda de JSON metode pentru a transporta o copie profundă person obiect:

Ieșire

Code language: CSS (css)

În acest exemplu, toate valorile în copiedPerson obiect sunt deconectate de la original person obiect. În acest tutorial, ați învățat cum să copiați obiecte în JavaScript folosind copiere superficială sau profundă.

  • a fost acest tutorial util ?
  • YesNo