— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Grunne kopi
Grunne copy er en bit-messig kopi av et objekt. En ny objektet er opprettet som har en eksakt kopi av verdiene i det opprinnelige objektet. Hvis noen av feltene av objekt-referanser til andre objekter, bare referansen adresser er kopiert dvs., bare minne adresse er kopiert.
Dyp kopi
En dyp kopier kopierer alle felt, og gjør kopier av dynamisk allokert minne peker til felt., En dyp kopi oppstår når et objekt kopieres sammen med de objekter som det refererer til.
Grunne Kopi: Det gjør en kopi av henvisningen til X i Y. Tenke på det som en kopi av X-Adresse. Så, adresser av X og Y vil være den samme, dvs. at de vil peke til samme sted i minnet.
Dyp kopi: Det gjør en kopi av alle medlemmer av X, tildeler annet sted i minnet for Y, og deretter tilordner den kopierte medlemmer til Y for å oppnå dyp kopi. På denne måten, hvis X forsvinner Y er fortsatt gyldig i minnet.,
riktig begrep å bruke ville være kloning, der du vet at de begge er helt det samme, men likevel annerledes (dvs. som er lagret som to forskjellige steder i minne).
se på dette eksempelet:
var employeeDetailsOriginal = { name: 'Manjula', age: 25, Profession: 'Software Engineer' };
La oss si at du ønsker å lage en kopi av denne, slik at selv om du endrer den opprinnelige verdiene, kan du alltid gå tilbake til den opprinnelige.,
jeg kan gjøre dette:
var employeeDetailsDuplicate = employeeDetailsOriginal; //Shallow copy!
Hvis vi endrer du en verdi:
employeeDetailsDuplicate.name = 'NameChanged';
Denne erklæringen vil også endre navnet fra employeeDetailsOriginal, siden vi har en grunn kopi, eller en referanse til var employeeDetailsOriginal. Dette betyr at du taper det opprinnelige data som godt.
Men, skape en helt ny variabel ved hjelp av egenskapene fra den opprinnelige employeeDetailsOriginal variabel, kan du opprette en dyp kopi.
hvis du Nå endre employeeDetailsDuplicate.,navn, det vil bare påvirke employeeDetailsDuplicate og ikke employeeDetailsOriginal
Diagramatic eksempel
Så Hvordan å kopiere JavaScript-objekt til nye variable IKKE av referanse?
det eneste alternativet er å liksom klone objektet.
Ren javascript-metode til dyp klone objektet
Leave a Reply