— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Matala kopio
Matala kopio on bit-viisasta kopioida objektin. Luodaan uusi objekti, jolla on tarkka kopio alkuperäisen objektin arvoista. Jos kaikki kentät kohde on viittauksia muihin objekteihin, vain viite-osoitteet ovat kopioitu eli vain muistin osoite on kopioitu.
Syvä kopio
syvä kopioi kopioi kaikki kentät, ja tekee kopioita dynaamisesti varattu muisti huomautti kentät., Syvä kopio tapahtuu, kun objekti kopioidaan yhdessä niiden esineiden kanssa, joihin se viittaa.
Matala Kopio: Se tekee kopion viittaus X Y. Ajattele sitä kuin kopio X: n Osoite. X: n ja Y: n osoitteet ovat siis samat eli ne viittaavat samaan muistipaikkaan.
Syvä kopio: Se tekee kopion kaikki jäsenet X, jakaa eri muistipaikkaan Y ja sitten määrittää kopioidun jäseniä Y saavuttaa syvä kopio. Näin, Jos X katoaa Y on edelleen voimassa muistissa.,
oikea termi olisi kloonaus, jossa tiedät, että ne molemmat ovat täysin samat, mutta eri (eli tallennetaan kahteen eri paikkaan muistissa tilaa).
Mieti tätä esimerkkiä:
var employeeDetailsOriginal = { name: 'Manjula', age: 25, Profession: 'Software Engineer' };
oletetaan, että haluat luoda päällekkäisiä tämän niin, että vaikka muutat alkuperäiset arvot, voit aina palata alkuperäiseen.,
en voi tehdä tämän:
var employeeDetailsDuplicate = employeeDetailsOriginal; //Shallow copy!
Jos me muuttaa arvoa:
employeeDetailsDuplicate.name = 'NameChanged';
Tämä lausunto on myös muuttaa nimensä employeeDetailsOriginal, koska meillä on matala kopio, tai viittaus var employeeDetailsOriginal. Tämä tarkoittaa, olet menettää alkuperäisen tiedot samoin.
Mutta, luodaan uusi muuttuja käyttämällä ominaisuuksia alkuperäisestä employeeDetailsOriginal muuttuja, voit luoda syvä kopio.
nyt, jos vaihdat employeedetailsduplicatea.,nimi, se vaikuttaa vain employeeDetailsDuplicate ja ei employeeDetailsOriginal
Diagramatic esimerkki
Joten Miten kopioi JavaScript-objektin uusi muuttuja EI viitata?
ainoa vaihtoehtosi on jotenkin kloonata objekti.
Pure javascript method to deep clone object
Leave a Reply