Export objektu v modulech pomocí uzávěrů v JavaScriptu

Předpokládejme, že máme následující modul:

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

Předpokládejme, že chceme exportovat všechny tři funkce ven. V tomto případě, abychom venku modulu nemnožili zbytečná jména funkcí, je lepší zapsat všechny funkce do jednoho objektu a provést export tohoto objektu:

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

Protože se názvy klíčů a proměnných shodují, lze objekt s funkcemi zjednodušit:

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

Lze jít i jinou cestou. Budeme zapisovat funkce do objektu ihned při popisu funkce, takto:

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

Je dán následující modul:

javascript;(function() {
  let str1 = 'proměnná modulu';
  let str2 = 'proměnná modulu';
  let str3 = 'proměnná modulu';
  
  function func1() {
    alert('funkce modulu');
  }
  function func2() {
    alert('funkce modulu');
  }
  function func3() {
    alert('funkce modulu');
  }
  function func4() {
    alert('funkce modulu');
  }
  function func5() {
    alert('funkce modulu');
  }
})();

Exportujte ven objekt s prvními pěti funkcemi a prvními dvěma proměnnými.