CodeBlanks Logo Icon CodeBlanks

Module pattern

JavaScript kursu · Orta seviye · Ders 16/134

Closure ile özel değişkenleri dışarıdan koruyan modül desenini öğrenirsin.

Module deseni

Module deseni, IIFE ile nesne döndürmeyi birleştirir. IIFE özel durumu sarar, döndürülen nesne yalnızca herkese açık metodları (public API) içerir.

Örneğin let count = 0 IIFE içinde kalır; dışarıdaki kod counter.increment() çağırabilir ama count'a doğrudan erişemez. Özel değişken (private variable) korunur.

Revealing module

Bir varyant, revealing module desenidir. IIFE içinde tüm yardımcı fonksiyonları normal biçimde tanımlarsın; sonunda döndürülen nesne yalnızca dışarı açmak istediklerini gösterir.

Bu, hangi metodların herkese açık olduğunu tek bir yerde toplar. Okunabilirlik artar; özel yardımcılar gizli kalır ve istersen bir metodun adını değiştirip dışarıdaki adını sabit tutabilirsin.

Uygulama Sayaç modülü yaz

counter adlı bir modülü IIFE ile yaz. IIFE içinde özel let count = 0 tutulsun. Döndürülen nesnede increment (sayacı bir artırıp döndürür) ve get (sayacı döndürür) metodları olsun. IIFE (function() { ... })() biçiminde çağrılsın.

Örnek çözümü göster
const counter = (function() {
  let count = 0;
  return {
    increment: function() { count++; return count; },
    get: function() { return count; }
  };
})();

Kendini test et

  1. Module deseninde özel değişken nerede yaşar?

    • Global kapsamda
    • Döndürülen nesnede herkese açık
    • Hiçbir yerde, otomatik silinir
    • IIFE'nin kapanışında, dışarıdan erişilemez
    Cevabı göster

    IIFE'nin kapanışında, dışarıdan erişilemez — Doğru. Özel değişken IIFE kapsamında hapsolur; yalnızca döndürülen metodlar üzerinden dolaylı erişilebilir.

  2. Module kavramlarını eşleştir

    module pattern
    IIFE nesne döndürerek durumu korur
    private variable
    Dışarıdan erişilemeyen değişken
    public API
    Dışarıdan çağrılabilen metodlar
    revealing module
    Açılacakları sonda toplar
  3. Doğru metod seç

    const counter = (function() {
      let count = 0;
      return {
        get: ____,
        increment: function() { count++; }
      };
    })();
    Cevabı göster
    const counter = (function() {
      let count = 0;
      return {
        get: function() { return count; },
        increment: function() { count++; }
      };
    })();

Orta seviye bölümündeki tüm dersler