0Pricing
JavaScript Academy · Ders

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
Güvenli Nesne Birleştirme; Dondurma ve Mühürleme — resim 1

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);
Güvenli Nesne Birleştirme; Dondurma ve Mühürleme — resim 2

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);
Güvenli Nesne Birleştirme; Dondurma ve Mühürleme — resim 3

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);
Güvenli Nesne Birleştirme; Dondurma ve Mühürleme — resim 4

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 Nesne Birleştirme; Dondurma ve Mühürleme — resim 5

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.
Güvenli Nesne Birleştirme; Dondurma ve Mühürleme — resim 6

Prototip kirlenmesi temelleri sınavı

Hızlı kontrol: Güvenilmeyen birleştirmeler için en güvenli hedef.

Güvenli Nesne Birleştirme; Dondurma ve Mühürleme — resim 7

Ö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.

Güvenli Nesne Birleştirme; Dondurma ve Mühürleme — resim 8

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

  1. Girdi Doğrulama, Kaçış Temelleri
  2. Güvenli Nesne Birleştirme; Dondurma ve Mühürleme
  3. Hata Sınırları (Kavramsal) — Çatı Olmadan
← JavaScript Academy Sayfasına Dön