— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
mělká kopie
mělká kopie je bitová kopie objektu. Vytvoří se nový objekt, který má přesnou kopii hodnot v původním objektu. Pokud je některá z polí objektu odkazy na jiné objekty, zkopírují se pouze referenční adresy, tj. zkopíruje se pouze paměťová adresa.
Deep copy
hluboká kopie zkopíruje všechna pole a vytvoří kopie dynamicky přidělené paměti, na kterou ukazují pole., Hluboká kopie nastane, když je objekt zkopírován spolu s objekty, na které odkazuje.
mělká kopie: vytvoří kopii odkazu na X do Y. Přemýšlejte o tom jako o kopii adresy X. Takže adresy X a Y budou stejné, tj. budou ukazovat na stejné místo paměti.
Deep copy: vytvoří kopii všech členů X, přidělí různé umístění paměti pro Y a poté přiřadí Zkopírované členy Y K dosažení hluboké kopie. Tímto způsobem, pokud x zmizí Y je stále platný v paměti.,
správný termín by byl klonování, kde víte, že oba jsou úplně stejné, ale přesto odlišné (tj. uloženy jako dvou různých místech v paměti).
Vezměme si tento příklad:
var employeeDetailsOriginal = { name: 'Manjula', age: 25, Profession: 'Software Engineer' };
řekněme, že chcete vytvořit duplikát, takže i když změníte původní hodnoty, můžete se vždy vrátit k originálu.,
mohu to udělat:
var employeeDetailsDuplicate = employeeDetailsOriginal; //Shallow copy!
Pokud změníme hodnotu:
employeeDetailsDuplicate.name = 'NameChanged';
Toto prohlášení bude také změnit jméno z employeeDetailsOriginal, protože máme mělké kopie, nebo odkaz na var employeeDetailsOriginal. To znamená, že ztrácíte i původní data.
ale vytvořením zcela nové proměnné pomocí vlastností z původní proměnné employeedetailsoriginální, můžete vytvořit hlubokou kopii.
Nyní, pokud změníte employeeDetailsDuplicate.,jméno, to bude mít vliv pouze employeeDetailsDuplicate a ne employeeDetailsOriginal
Diagramatic příklad
Tak Jak zkopírovat objekt JavaScript, aby nová proměnná NENÍ odkazem?
jedinou možností je nějakým způsobem klonovat objekt.
čistá metoda javascript pro hluboký klonovací objekt
Leave a Reply