shrnutí: v tomto tutoriálu se naučíte kopírovat objekty v JavaScriptu, včetně mělké kopie a hluboké kopie., Kopírovat objekt v Javascriptu, máte tři možnosti:
- Využití šíření (
...
) syntaxe - Použití
Object.assign()
metody - Použití
JSON.stringify()
JSON.parse()
metody
následující ukazuje, jak zkopírovat objekt pomocí tří výše uvedených metod:
Jak šířit (...
) a Object.assign()
provést mělké kopie, zatímco JSON metody provést hlubokou kopii.
mělká kopie vs., deep copy
v JavaScriptu používáte proměnné k ukládání hodnot, které mohou být primitivní nebo odkazy. Když vytvoříte kopii hodnoty uložené v proměnné, vytvoříte novou proměnnou se stejnou hodnotou. Pro primitivní hodnoty, stačí jednoduše použít jednoduchý úkol:
Code language: JavaScript (javascript)
když změníte hodnotu proměnné zkopírovány hodnoty původní zůstává stejný.
Code language: JavaScript (javascript)
Výstup:
Nicméně, pokud budete používat operátor přiřazení pro referenční hodnotu, to nebude kopírovat hodnotu., Místo toho, obě proměnné odkazují na stejný objekt v paměti:
Code language: JavaScript (javascript)
A když přístup k objektu prostřednictvím nové proměnné (copiedPerson) a změňte hodnotu jeho majetku (jméno), můžete změnit hodnotu vlastnosti objektu.
Code language: JavaScript (javascript)
Výstup:
Code language: CSS (css)
hluboké kopírování znamená, že hodnota nové proměnné je odpojen z původní proměnné, zatímco mělké kopie znamená, že některé hodnoty jsou stále připojen k původní proměnné.,
Mělké kopie příklad
Vezměme si následující příklad:
V tomto příkladu:
- za Prvé, vytvořit nový objekt s názvem
person
. - za druhé klonujte objekt
person
metodouObject.assign()
. - třetí, změňte jméno a adresu
copiedPerson
objekt.,
výstup:
Nicméně, když si ukázat hodnoty, osoba, objekt, zjistíte, že informace o adrese změnit, ale první jméno:
Code language: JavaScript (javascript)
Výstup:
důvodem je to, že adresa je referenční hodnotu, zatímco první jméno je primitivní hodnoty. person
copiedPerson
odkazy na různé objekty, ale tyto objekty odkazují na stejné address
objekty.,
Hluboké kopírování příklad
následující úryvek nahradí se Object.assign()
metoda JSON metody provést hlubokou kopii person
předmět:
Výstupní
Code language: CSS (css)
V tomto příkladu, všechny hodnoty v copiedPerson
objekt je odpojen od původní person
objekt. V tomto tutoriálu jste se naučili kopírovat objekty v JavaScriptu pomocí mělké nebo hluboké kopie.
- byl tento tutoriál užitečný ?
- YesNo