0Pricing
JavaScript Academy · Ders

Object.freeze ve seal

Nesnelerde değişiklik yapılmasını önleyin.

Object.freeze ve seal, CoddyKit'te ücretsiz bir JavaScript Academy dersidir. Bu, 4 dersinin 1. 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 4 dersten oluşur.

Nesneler Neden Dondurulur?

Değişmezlik, verilerin oluşturulduktan sonra değişememesi demektir. Yanlışlıkla yapılan değişiklikleri önler, kodun anlaşılmasını kolaylaştırır ve tüm hata sınıflarını ortadan kaldırır.

JavaScript, nesneleri kilitlemek için Object.freeze ve Object.seal işlevlerini sunar.

Object.freeze Temelleri

Object.freeze, bir nesneyi tamamen salt okunur hâle getirir: özellik ekleyemez, silemez veya değiştiremezsiniz. Aynı nesneyi, artık dondurulmuş olarak döndürür.

const user = Object.freeze({ name: 'Ada', age: 36 });
user.age = 99;
console.log(user.age);

isFrozen ile Denetleme

Object.isFrozen, bir nesnenin dondurulmuş olup olmadığını bildirir. Güncelleme yapmayı denemeden önce kullanışlıdır.

const config = Object.freeze({ debug: false });
const settings = { theme: 'dark' };

console.log(Object.isFrozen(config));
console.log(Object.isFrozen(settings));

Sessiz ve Katı Moddaki Başarısızlık

Katı olmayan kodda, dondurulmuş bir nesneye yazma işlemleri sessizce başarısız olur. Katı modda ise TypeError fırlatılır. Her iki durumda da değer hiçbir zaman değişmez.

'use strict';
const frozen = Object.freeze({ x: 1 });
try {
  frozen.x = 2;
} catch (e) {
  console.log(e.name);
}
console.log(frozen.x);

Freeze Yeni Özellikleri Engeller

Dondurma işlemi özellik eklenmesini de önler. Yeni key basitçe görünmez.

const point = Object.freeze({ x: 0 });
point.y = 5;
console.log(point.y);
console.log(Object.keys(point));

Freeze Silmeyi Engeller

Dondurulmuş bir nesnedeki özellikleri de silemezsiniz. Özellik yerinde kalır.

const obj = Object.freeze({ keep: 'me' });
delete obj.keep;
console.log(obj.keep);

Object.seal Farklıdır

Object.seal, freeze işleminden daha az katıdır. Özellikleri ekleyemez veya silemezsiniz, ancak mevcut değerleri hâlâ değiştirebilirsiniz.

const sealed = Object.seal({ count: 1 });
sealed.count = 2;
sealed.extra = 3;

console.log(sealed.count);
console.log(sealed.extra);

isSealed ile Denetleme

Object.isSealed, bir nesnenin mühürlenmiş olup olmadığını bildirir. Her dondurulmuş nesnenin aynı zamanda mühürlenmiş olduğunu, ancak bunun tersinin geçerli olmadığını unutmayın.

const sealed = Object.seal({ a: 1 });
const frozen = Object.freeze({ b: 2 });

console.log(Object.isSealed(sealed));
console.log(Object.isSealed(frozen));
console.log(Object.isFrozen(sealed));

freeze ve seal Özeti

freeze: ekleme yok, silme yok, değiştirme yok. seal: ekleme yok, silme yok, ancak değiştirmeye izin verilir. Yapı sabit, değerler değişkense seal seçin.

const f = Object.freeze({ v: 1 });
const s = Object.seal({ v: 1 });

f.v = 100;
s.v = 100;

console.log('frozen v:', f.v);
console.log('sealed v:', s.v);

preventExtensions

En gevşek kilit Object.preventExtensions'tır: özellik ekleyemezsiniz, ancak mevcut özellikleri değiştirebilir ve silebilirsiniz. Üç seçenek arasındaki en zayıf kilittir.

const obj = Object.preventExtensions({ a: 1 });
obj.a = 2;
obj.b = 3;

console.log(obj.a);
console.log(obj.b);
console.log(Object.isExtensible(obj));

Neden Önemlidir?

Yapılandırmayı ve sabitleri dondurmak, bir kod tabanındaki yanlışlıkla yapılan düzenlemeleri önler. Ancak şunu unutmayın: Object.freeze sığ çalışır; bu nedenle iç içe nesneler değiştirilebilir kalır. Bunu bir sonraki bölümde düzelteceksiniz.

const SETTINGS = Object.freeze({ maxRetries: 3 });
function tryUpdate() {
  SETTINGS.maxRetries = 10;
}
tryUpdate();
console.log(SETTINGS.maxRetries);

Kısa Kontrol

Object.freeze ile Object.seal arasındaki fark nedir?

Özet: freeze ve seal

Nesneleri kilitlemeyi öğrendiniz:

  • Object.freeze: ekleme, silme veya değiştirme yok. isFrozen ile denetleyin.
  • Object.seal: ekleme veya silme yok, ancak değiştirmeye izin verilir.
  • preventExtensions: yalnızca eklemeyi engeller.
  • Üçü de sığ çalışır; sırada derin dondurma var.

Sıkça Sorulan Sorular

“Object.freeze ve seal” dersi ücretsiz mi?

Evet — “Object.freeze ve seal” 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 4 dersten oluşur.

“Object.freeze ve seal” dersinde ne öğreneceğim?

Nesnelerde değişiklik yapılmasını önleyin. 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, 4 dersinin 1. dersidir.

“Object.freeze ve seal” 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. Object.freeze ve seal
  2. Yüzeysel ve Derin Dondurma
  3. Değişmez Güncelleme Desenleri
  4. Derin Kopyalar için structuredClone
← JavaScript Academy Sayfasına Dön