Bir nesnenin derin kopyasını (deep clone) nasıl alırsınız?
Cevap
Spread ({...obj}) ve Object.assign yalnızca yüzeysel kopya yapar; iç içe nesneler hâlâ paylaşılır.
Seçenekler:
- `structuredClone(obj)`: modern tarayıcılarda ve Node 17+'da yerleşik. Date, Map, Set, döngüsel referansları destekler; fonksiyonları ve DOM düğümlerini kopyalayamaz.
- `JSON.parse(JSON.stringify(obj))`: basit ama
Date'i string'e çevirir,undefined, fonksiyon veMap'i kaybeder, döngüsel referansta hata verir. - Kendi fonksiyonunuz: mülakatta genelde istenen budur.
function derinKopya(deger, gorulen = new WeakMap()) {
if (deger === null || typeof deger !== "object") return deger;
if (deger instanceof Date) return new Date(deger);
if (gorulen.has(deger)) return gorulen.get(deger); // döngüsel referans
const kopya = Array.isArray(deger) ? [] : {};
gorulen.set(deger, kopya);
for (const anahtar of Reflect.ownKeys(deger)) {
kopya[anahtar] = derinKopya(deger[anahtar], gorulen);
}
return kopya;
}İlgili JavaScript soruları
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.