Meydan okuma - Modüler yapı
ES modülleri ve closure ile özel durumu olan bir sayaç modülü yazarsın.
Sayaç modülü
Bu meydan okumada özel durumlu bir sayaç modülü yazacaksın. Dışarıdan yalnızca artırma ve okuma verilir; sayacın kendisine doğrudan erişilemez.
Bunun için bir closure kullanırsın. createCounter fonksiyonu içerde let count = 0 tanımlar ve increment ile getCount yöntemlerini döndürür.
Son olarak export default createCounter ile fonksiyonu modülden dışa aktarırsın. Başka dosyalar bunu import edip kullanabilir.
Closure ile gizli durum
Bir closure, iç fonksiyonun dış fonksiyonun değişkenlerine erişmesidir. createCounter çağrılınca yeni bir count oluşur ve yalnızca döndürülen yöntemler onu görür.
Dışarıdan counter.count yazamazsın; çünkü count nesnenin özelliği değil, kapanımın değişkenidir.
Bu teknik modül kalıbının temelidir: genel API açık, iç durum gizli kalır.
Uygulama createCounter fonksiyonunu yaz
createCounter() fonksiyonunu yaz. İçinde let count = 0 tanımla. increment ve getCount yöntemleri olan bir nesne döndür: increment sayacı bir artırır, getCount mevcut değeri verir. En sonda export default createCounter satırını ekle.
Örnek çözümü göster
function() { count = count + 1; }, getCount: function() { return count; } }; döndür. En son satıra export default createCounter; ekle.
Örnek çözüm:
function createCounter() {
let count = 0;
return {
increment: function() { count = count + 1; },
getCount: function() { return count; }
};
}
export default createCounter;
Kendini test et
-
ES modüllerinde varsayılan dışa aktarım nasıl yazılır?
- export default createCounter
- module.exports = createCounter
- exports.createCounter
- public createCounter
Cevabı göster
export default createCounter — Doğru. export default modülden tek varsayılan değer çıkarır.
-
Varsayılan dışa aktarımı yaz
export ____;Cevabı göster
export default createCounter;