Muuttujien ja funktioiden vieminen moduuleissa sulkeumien kautta JavaScriptissä

Joskus on tarpeen tehdä niin, että jotkut moduulin muuttujat ja funktiot ovat saatavilla ulkopuolelta. Katsotaan kuinka tämä tehdään. Olkoon meillä seuraava moduuli:

javascript;(function() {
  let str = 'moduulin muuttuja';
  
  function func() {
    alert('moduulin funktio');
  }
})();

Viedään funktiomme func. Tätä varten kirjoitamme sen selainobjektin window ominaisuuteen:

javascript;(function() {
  let str = 'moduulin muuttuja';
  
  function func() {
    alert('moduulin funktio');
  }
  
  window.func = func;
})();

Nyt voimme kutsua funktiotamme moduulin ulkopuolelta:

javascript;(function() {
  let str = 'moduulin muuttuja';
  
  function func() {
    alert('moduulin funktio');
  }
  
  window.func = func;
})();

window.func(); // tulostaa 'moduulin funktio'

Samaan aikaan funktiota ei ole pakko kutsua window-objektin ominaisuutena:

javascript;(function() {
  let str = 'moduulin muuttuja';
  
  function func() {
    alert('moduulin funktio');
  }
  
  window.func = func;
})();

func(); // tulostaa 'moduulin funktio'
Задание 1

Annettu on seuraava moduuli:

javascript;(function() {
  let str1 = 'moduulin muuttuja';
  let str2 = 'moduulin muuttuja';
  let str3 = 'moduulin muuttuja';
  
  function func1() {
    alert('moduulin funktio');
  }
  function func2() {
    alert('moduulin funktio');
  }
  function func3() {
    alert('moduulin funktio');
  }
})();

Vie yksi muuttujista ja kaksi mitä tahansa funktiota ulos.