Symbol kullanım örnekleri
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
-
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.
-
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') }; -
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