Export objektu v moduloch prostredníctvom uzavretí v JavaScripte

Majme nasledujúci modul:

javascript;(function() {
  function func1() {
    alert('funkcia modulu');
  }
  function func2() {
    alert('funkcia modulu');
  }
  function func3() {
    alert('funkcia modulu');
  }
})();

Predpokladajme, že chceme exportovať von všetky tri funkcie. V tomto prípade, aby sme nevytvárali mimo modulu nadbytočné názvy funkcií, je lepšie zapísať všetky funkcie do jedného objektu a vykonať export tohto objektu:

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

Keďže názvy kľúčov a premenných sa zhodujú, objekt s funkciami môžeme zjednodušiť:

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

Môžeme ísť aj inou cestou. Budeme zapisovať funkcie do objektu priamo pri popise funkcie, takto:

javascript;(function() {
  let module = {};
  
  module.func1 = function() {
    alert('funkcia modulu');
  }
  module.func2 = function() {
    alert('funkcia modulu');
  }
  module.func3 = function() {
    alert('funkcia modulu');
  }
  
  window.module = module;
})();
Задание 1

Daný je nasledujúci modul:

javascript;(function() {
  let str1 = 'premenná modulu';
  let str2 = 'premenná modulu';
  let str3 = 'premenná modulu';
  
  function func1() {
    alert('funkcia modulu');
  }
  function func2() {
    alert('funkcia modulu');
  }
  function func3() {
    alert('funkcia modulu');
  }
  function func4() {
    alert('funkcia modulu');
  }
  function func5() {
    alert('funkcia modulu');
  }
})();

Exportujte von objekt s prvými piatimi funkciami a prvými dvoma premennými.