Objektin viemä moduuleissa sulkeumien kautta JavaScriptissä

Oletetaan, että meillä on seuraava moduuli:

javascript;(function() {
  function func1() {
    alert('moduulin funktio');
  }
  function func2() {
    alert('moduulin funktio');
  }
  function func3() {
    alert('moduulin funktio');
  }
})();

Oletetaan, että haluamme viedä ulos kaikki kolme funktiota. Tässä tapauksessa, jotta ulkopuolelle moduulia ei synny tarpeettomia funktionimiä, on parempi tallentaa kaikki funktiot yhteen objektiin ja suorittaa tämän objektin vienti:

javascript;(function() {
  function func1() {
    alert('moduulin funktio');
  }
  function func2() {
    alert('moduulin funktio');
  }
  function func3() {
    alert('moduulin funktio');
  }
  
  window.module = {func1: func1, func2: func2, func3: func3};
})();

Koska avainten ja muuttujien nimet ovat samat, objektia funktioiden kanssa voidaan yksinkertaistaa:

javascript;(function() {
  function func1() {
    alert('moduulin funktio');
  }
  function func2() {
    alert('moduulin funktio');
  }
  function func3() {
    alert('moduulin funktio');
  }
  
  window.module = {func1, func2, func3};
})();

Voidaan mennä myös toista tietä. Tallennamme funktiot objektiin heti funktion kuvauksen yhteydessä, tällä tavalla:

javascript;(function() {
  let module = {};
  
  module.func1 = function() {
    alert('moduulin funktio');
  }
  module.func2 = function() {
    alert('moduulin funktio');
  }
  module.func3 = function() {
    alert('moduulin funktio');
  }
  
  window.module = module;
})();
Задание 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');
  }
  function func4() {
    alert('moduulin funktio');
  }
  function func5() {
    alert('moduulin funktio');
  }
})();

Vie ulos objekti, joka sisältää viisi ensimmäistä funktiota ja kaksi ensimmäistä muuttujaa.