Symbol.for ve Symbol.keyFor
Global symbol kaydından symbol alma ve anahtarını bulmayı öğrenirsin.
Global symbol kaydı
Symbol() her çağrıda yeni bir sembol üretir. Ama bazen kodun farklı yerlerinde aynı sembolü paylaşmak istersin; bunu bir dize anahtarla tanımlarsın.
Symbol.for('anahtar') önce global kayıtta bu anahtara bakar. Varsa onu döndürür; yoksa yeni bir sembol oluşturup kaydeder ve onu döndürür. Böylece Symbol.for('app') iki kez çağrılsa aynı sembolü verir. Bu semboller uygulamanın tamamında paylaşılır.
Symbol.keyFor
Symbol.keyFor(symbol) tersini yapar: global kayıttaki bir sembolün anahtar dizesini verir. Yani Symbol.keyFor(Symbol.for('token')) çağrısı 'token' döndürür; bu, kayıt mekanizmasını doğrulamanın kolay bir yoludur.
Eğer sembol Symbol() ile (kayıt dışı) oluşturulduysa Symbol.keyFor undefined döndürür. Böylece bir sembolün paylaşılan mı yoksa yerel mi olduğunu kolayca ayırt edebilirsin.
Uygulama Paylaşılan sembol kullan
first değişkenine Symbol.for('config') ile bir sembol al. Symbol.keyFor(first) ile bu sembolün anahtarını yazdır. Sonra second değişkenine Symbol.for('config') ile ikinci bir çağrı yapıp first === second karşılaştırmasını yazdır.
Örnek çözümü göster
const first = Symbol.for('config');
console.log(Symbol.keyFor(first));
const second = Symbol.for('config');
console.log(first === second);
Kendini test et
-
Symbol.for('app') iki kez çağrılırsa ne olur?
- Her seferinde yeni bir sembol üretilir
- İlk çağrı hata fırlatır
- Aynı sembol döner ve ikisi eşittir
- undefined döner
Cevabı göster
Aynı sembol döner ve ikisi eşittir — Doğru. Symbol.for önce global kayıta bakar; anahtar varsa kayıttaki sembolü döndürür.
-
Paylaşılan sembol oluştur
const shared = ____;Cevabı göster
const shared = Symbol.for('token'); -
Symbol.for ve Symbol.keyFor
- Symbol.for('x')
- Global kayıttan okur ya da oluşturur
- Symbol.keyFor(sym)
- Sembolün anahtarını verir
- Symbol('x')
- Her zaman benzersiz
- Kayıtta yoksa
- keyFor undefined döner