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:
- Utilizarea răspândirea (
...
) sintaxa - Utilizare
Object.assign()
metoda - Utilizare
JSON.stringify()
șiJSON.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 numit
person
. - în al doilea rând, clonați obiectul
person
folosind metodaObject.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