CodeBlanks Logo Icon CodeBlanks

Symbol kullanım örnekleri

JavaScript kursu · İleri seviye · Ders 70/100

Enum deseni ve eklenti güvenli özellikler gibi gerçek symbol kullanımlarını öğrenirsin.

Enum deseni

JavaScript'te yerleşik bir enum türü yoktur; ama semboller güvenli bir alternatif sunar. Dize sabitler yerine sembolleri renk, durum veya rol gibi sabit kategorileri temsil etmek için kullanabilirsin.

Her sembol benzersiz olduğu için birbiriyle ilişkisiz iki modül yanlışlıkla aynı değeri paylaşamaz. typeof ile yapılan tür denetimi bir marka (brand) doğrulaması gibi çalışır: değerinizin gerçekten bu kategoriye ait olduğunu kanıtlar.

Eklenti güvenli özellikler

Bir kütüphane yazıyorsan ve kullanıcının nesnesine, isim çakışması riski olmadan meta veri eklemek istiyorsan, semboller doğru yanıttır. Sembol anahtarları for...in ve Object.keys içinde görünmediği için meta verin gizli kalır.

Kullanıcı yanlışlıkla senin anahtarlarını ezemez; sen de kullanıcının anahtarlarını ezemezsin. Bu düzene eklenti güvenli (extension-safe) özellik denir ve kütüphane yazarlarının favori aracıdır.

Uygulama Enum desenini uygula

Bir Status nesnesini sembollerle oluştur: Open: Symbol('open') ve Closed: Symbol('closed'). task nesnesine [Status.Open]: true özelliğini ekle. typeof Status.Open === 'symbol' ile marka doğrulaması yap ve sonucunu yazdır.

Örnek çözümü göster
const Status = {
  Open: Symbol('open'),
  Closed: Symbol('closed')
};
const task = {
  [Status.Open]: true
};
console.log(typeof Status.Open === 'symbol');

Kendini test et

  1. Aşağıdaki durumlardan hangisinde symbol kullanmak en uygundur?

    • Sabit kategorileri benzersiz değerlerle temsil etmek
    • Bir sayıyı dizeye çevirmek
    • Bir diziyi tersine çevirmek
    • Bir nesnenin özelliğini silmek
    Cevabı göster

    Sabit kategorileri benzersiz değerlerle temsil etmek — Doğru. Sabit kategoriler (renk, durum, rol) için sembol kullanmak enum deseni oluşturur.

  2. Enum desenini tamamla

    const Status = { Active: ____, Paused: Symbol('paused'), Done: Symbol('done') };
    Cevabı göster
    const Status = { Active: Symbol('active'), Paused: Symbol('paused'), Done: Symbol('done') };
  3. Symbol kullanım senaryoları

    Enum deseni
    Sabit kategoriler için
    Eklenti güvenli
    İsim çakışmasını önler
    Marka doğrulama
    typeof ile tür denetimi
    for...in'de gizli
    Üçüncü taraf verisini korur

İleri seviye bölümündeki tüm dersler