Güvenli Nesne Birleştirme; Dondurma ve Mühürleme
Nesneleri beklenmedik sonuçlar olmadan birleştirin, prototip kirlenmesinden kaçının ve verileri Object.freeze ile Object.seal kullanarak koruyun.
Güvenli Nesne Birleştirme; Dondurma ve Mühürleme, CoddyKit'te ücretsiz bir JavaScript Academy dersidir. Bu, 3 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, JavaScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. JavaScript Academy kursu toplamda 3 dersten oluşur.
Neden güvenli birleştirme?
Amaç: Güvenli birleştirme yapın ve durumu koruyun.
- Yayma veya Object.assign({}, a, b) ile sığ birleştirme yapın
- Anahtarları filtreleyerek prototip kirlenmesini önleyin
- Güvenli hedefler için Object.create(null) kullanın
- Nesneleri kilitlemek için freeze ve seal kullanın

Sığ birleştirme (yayma)
Yeni bir nesne oluşturmak için yayma (veya Object.assign({}, a, b)) kullanın; girdileri değiştirmeyin.
// Shallow merge with spread keeps sources unchanged
const a = { x: 1, y: 2 };
const b = { y: 9, z: 3 };
// Later keys win on conflicts
const merged1 = { ...a, ...b };
console.log("a:", a);
console.log("b:", b);
console.log("merged1:", merged1);

Prototip kirlenmesini önleyin
Anahtarlar dışarıdan geldiğinde, küçük bir izin verilenler/engellenenler listesi yazın ve hedef olarak Object.create(null) kullanın.
// Avoid prototype pollution: use a null-prototype target and skip special keys
function safeMergeUntrusted(pairs) {
// target has no prototype
const out = Object.create(null);
// keys to skip
const BLOCK = new Set(["__proto__", "prototype", "constructor"]);
for (const [k, v] of pairs) {
if (typeof k !== "string") continue;
if (BLOCK.has(k)) continue;
out[k] = v;
}
return out;
}
const inputPairs = [
["name", "Ayla"],
["__proto__", { hacked: true }],
["role", "user"]
];
const safe = safeMergeUntrusted(inputPairs);
console.log("safe.name:", safe.name);
console.log("safe.role:", safe.role);
console.log("safe.__proto__ is undefined?", safe.__proto__ === undefined);

Kopyala + assign
Object.assign({}, ...), yeni başlayanların kolayca okuyabileceği güvenli bir desendir.
// Object.assign can also create a new object
const base = { a: 1, b: 2 };
const patch = { b: 5 };
// New object as first arg → sources untouched
const merged2 = Object.assign({}, base, patch);
console.log("base:", base);
console.log("patch:", patch);
console.log("merged2:", merged2);

freeze ve seal karşılaştırması
freeze tüm değişiklikleri engeller; seal ekleme ve kaldırmayı engeller, ancak mevcut özelliklerin güncellenmesine izin verir.
// Freeze: no add/remove/change
const frozen = Object.freeze({ id: 1, tag: "locked" });
// Seal: no add/remove, but you may change existing values
const sealed = Object.seal({ id: 2, tag: "open" });
// Attempts (silently fail in non-strict mode)
frozen.tag = "new";
sealed.tag = "updated";
sealed.newKey = 123;
console.log("frozen:", frozen);
console.log("sealed:", sealed);

Güvenli birleştirme alışkanlıkları
İpuçları:
- Yeni nesneler oluşturmayı tercih edin: {...a, ...b} veya Object.assign({}, a, b).
- Güvenilmeyen anahtarlar için Object.create(null) kullanın ve __proto__, prototype, constructor anahtarlarını atlayın.
- Yapılandırmaları Object.freeze ile koruyun; modelleri Object.seal ile güvenceye alın.

Prototip kirlenmesi temelleri sınavı
Hızlı kontrol: Güvenilmeyen birleştirmeler için en güvenli hedef.

Özet
Özet: Yeni nesneler oluşturarak birleştirin, güvenilmeyen anahtarları filtreleyin ve önemli veri yapılarını korumak için freeze/seal kullanın.

Sıkça Sorulan Sorular
“Güvenli Nesne Birleştirme; Dondurma ve Mühürleme” dersi ücretsiz mi?
Evet — “Güvenli Nesne Birleştirme; Dondurma ve Mühürleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve JavaScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. JavaScript Academy kursu toplamda 3 dersten oluşur.
“Güvenli Nesne Birleştirme; Dondurma ve Mühürleme” dersinde ne öğreneceğim?
Nesneleri beklenmedik sonuçlar olmadan birleştirin, prototip kirlenmesinden kaçının ve verileri Object.freeze ile Object.seal kullanarak koruyun. JavaScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
JavaScript Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te JavaScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 2. dersidir.
“Güvenli Nesne Birleştirme; Dondurma ve Mühürleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu JavaScript Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her JavaScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Girdi Doğrulama, Kaçış Temelleri
- Güvenli Nesne Birleştirme; Dondurma ve Mühürleme
- Hata Sınırları (Kavramsal) — Çatı Olmadan