— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Overfladisk kopi
Overfladisk kopi er en smule klog kopi af et objekt. Der oprettes et nyt objekt, der har en nøjagtig kopi af værdierne i det originale objekt. Hvis et af felterne i objektet er henvisninger til andre objekter, kopieres bare referenceadresser, dvs.kun hukommelsesadressen kopieres.
Deep copy
en deep copy kopierer alle felter, og gør kopier af dynamisk tildelte hukommelse peget på af felterne., En dyb kopi opstår, når et objekt kopieres sammen med de objekter, som det refererer til.
Shallo.Copy: det gør en kopi af henvisningen til Y. til Y. tænk over det som en kopi af Addresss adresse. Så adresserne på and og Y vil være de samme, dvs.de peger på den samme hukommelsesplacering.
dyb kopi: det laver en kopi af alle medlemmer af., tildeler forskellige hukommelsesplaceringer for Y og tildeler derefter de kopierede medlemmer til Y for at opnå dyb kopi. På denne måde, hvis van forsvinder Y er stadig gyldig i hukommelsen.,
det korrekte udtryk at bruge ville være kloning, hvor du ved, at de begge er helt ens, men alligevel forskellige (dvs.gemt som to forskellige placeringer i hukommelsespladsen).
overvej dette eksempel:
var employeeDetailsOriginal = { name: 'Manjula', age: 25, Profession: 'Software Engineer' };
lad os sige, at du vil oprette et duplikat af dette, så selvom du ændrer de oprindelige værdier, kan du altid vende tilbage til originalen.,
jeg kan gøre dette:
var employeeDetailsDuplicate = employeeDetailsOriginal; //Shallow copy!
Hvis vi ændrer en værdi:
employeeDetailsDuplicate.name = 'NameChanged';
Denne erklæring vil også ændre navn fra employeeDetailsOriginal, da vi har en overfladisk kopi, eller en henvisning til var employeeDetailsOriginal. Det betyder, at du også mister de originale data.
men at skabe en helt ny variabel ved at bruge egenskaberne fra den oprindelige employeeDetailsOriginal variabel, kan du oprette en dyb kopi.
nu, hvis du ændrer employeeDetailsDuplicate.,navn, det vil kun påvirke employeeDetailsDuplicate og ikke employeeDetailsOriginal
Diagramatic eksempel
Så, Hvordan du kan kopiere JavaScript object til new variable IKKE som reference?
din eneste mulighed er på en eller anden måde at klone objektet.
ren javascript metode til dyb klon objekt
Leave a Reply