Yhteenveto: tämä opetusohjelma, opit, miten voit kopioida esineitä JavaScript, mukaan lukien matala kopio ja syvä kopio., Kopioi objekti JavaScript, sinulla on kolme vaihtoehtoa:
- Käytä leviäminen (
...
) syntaksi - Käytä
Object.assign()
tapa - Käytä
JSON.stringify()
jaJSON.parse()
menetelmät
seuraavassa kuvataan, miten voit kopioida objektin käyttämällä kolmea edellä mainittuja menetelmiä:
Molemmat leviäminen (...
) ja Object.assign()
suorita matala kopio, kun taas JSON-menetelmiä kuljettaa syvä kopio.
Shallow copy vs., Deep copy
Javascriptissä käytetään muuttujia, jotka tallentavat arvoja, jotka voivat olla alkeellisia tai viittauksia. Kun teet kopion muuttujaan tallennetusta arvosta, luot uuden muuttujan, jolla on sama arvo. Alkeellinen arvo, vain yksinkertaisesti käyttää yksinkertainen tehtävä:
Code language: JavaScript (javascript)
kun muutat arvo kopioidaan muuttujan arvo alkuperäinen pysyy samana.
Code language: JavaScript (javascript)
tuloksena on:
Kuitenkin, jos voit käyttää tehtävän operaattori, viittaus arvo, se ei kopioi arvo., Sen sijaan molemmat muuttujat viittaavat samaan objektiin muisti:
Code language: JavaScript (javascript)
– Ja kun käyttää-objekti kautta uusi muuttuja (copiedPerson) ja muuta arvo-omaisuuttaan (nimi), voit vaihtaa omaisuuden arvo esine.
Code language: JavaScript (javascript)
tuloksena on:
Code language: CSS (css)
syvä kopiointi tarkoittaa sitä, että arvo uusi muuttuja on irrotettu alkuperäisestä muuttuja, kun taas matala kopio tarkoittaa sitä, että jotkut arvot ovat edelleen yhteydessä alkuperäinen muuttuja.,
Matala kopio esimerkki
Harkitse seuraava esimerkki:
tässä esimerkki:
- Ensimmäinen, luoda uuden objektin nimeltä
person
. - Toiseksi, klooni
person
objektinObject.assign()
menetelmä. - kolmas, vaihda
copiedPerson
objektin etunimi-ja osoitetiedot.,
Tässä on output:
Kuitenkin, kun voit näyttää arvoja, henkilö, objekti, tulet huomaamaan, että osoitetiedot muuttunut, mutta ensimmäinen nimi:
Code language: JavaScript (javascript)
tuloksena on:
syynä on se, että osoite on viitearvo, kun ensimmäinen nimi on alkeellinen arvo. Molemmat person
ja copiedPerson
viittauksia eri esineitä, mutta nämä esineet viittaavat samaan address
objektit.,
Syvä kopio esimerkki
seuraava pätkä korvaa Object.assign()
menetelmä JSON menetelmiä kuljettaa syvä kopio person
tavoite:
Lähtö
Code language: CSS (css)
tässä esimerkissä, kaikki arvot copiedPerson
esine on irrotettu alkuperäisestä person
objekti. Tässä opetusohjelma, olet oppinut kopioida esineitä JavaScript käyttäen joko matala tai syvä kopio.
- Auttoiko tämä opetusohjelma ?
- YesNo