— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
ondiepe kopie
ondiepe kopie is een bit-wise kopie van een object. Er wordt een nieuw object aangemaakt dat een exacte kopie heeft van de waarden in het oorspronkelijke object. Als een van de velden van het object verwijzingen naar andere objecten zijn, worden alleen de referentieadressen gekopieerd, dat wil zeggen, alleen het geheugenadres wordt gekopieerd.
Deep copy
een deep copy kopieert alle velden en maakt kopieën van dynamisch toegewezen geheugen waar de velden naar verwijzen., Een diepe kopie treedt op wanneer een object wordt gekopieerd samen met de objecten waarnaar het verwijst.
ondiepe kopie: Het maakt een kopie van de verwijzing naar X naar Y. zie het als een kopie van het adres van X. Dus, de adressen van X en Y zullen hetzelfde zijn dat wil zeggen ze zullen wijzen naar dezelfde geheugenlocatie.
Deep copy: het maakt een kopie van alle leden van X, wijst een andere geheugenlocatie toe voor Y en wijst vervolgens de gekopieerde leden toe aan Y om deep copy te bereiken. Op deze manier, als X verdwijnt, is Y nog steeds geldig in het geheugen.,
de juiste term om te gebruiken zou klonen zijn, waarbij je weet dat ze allebei totaal hetzelfde zijn, maar toch verschillend (dat wil zeggen opgeslagen als twee verschillende locaties in de geheugenruimte).
beschouw dit voorbeeld:
var employeeDetailsOriginal = { name: 'Manjula', age: 25, Profession: 'Software Engineer' };
stel dat u een duplicaat van dit wilt maken, zodat zelfs als u de oorspronkelijke waarden wijzigt, u altijd naar het origineel kunt terugkeren.,
Ik kan dit doen:
var employeeDetailsDuplicate = employeeDetailsOriginal; //Shallow copy!
als we een waarde wijzigen:
employeeDetailsDuplicate.name = 'NameChanged';
Dit statement zal ook de naam veranderen van employeeDetailsOriginal, omdat we een ondiepe kopie hebben, of een verwijzing naar var employeeDetailsOriginal. Dit betekent, je verliest de oorspronkelijke gegevens ook.
maar door een gloednieuwe variabele aan te maken door de eigenschappen van de originele employeedetail of oorspronkelijke variabele te gebruiken, kunt u een diepe kopie maken.
nu als u van employeeDetailsDuplicate verandert.,naam, het zal alleen invloed hebben op employeeDetailsDuplicate en niet employeeDetailsOriginal
Diagramatic voorbeeld
Dus Hoe u JavaScript object om een nieuwe variabele aan de hand?
uw enige optie is om het object op de een of andere manier te klonen.
Pure javascript-methode voor deep clone object
Leave a Reply