Exportul obiectului în module prin închideri în JavaScript

Să presupunem că avem următorul modul:

javascript;(function() {
  function func1() {
    alert('funcție modul');
  }
  function func2() {
    alert('funcție modul');
  }
  function func3() {
    alert('funcție modul');
  }
})();

Să presupunem că vrem să exportăm toate cele trei funcții în afară. În acest caz, pentru a nu crea în afara modulului nume inutile de funcții, este mai bine să scriem toate funcțiile într-un obiect și să efectuăm exportul acestui obiect:

javascript;(function() {
  function func1() {
    alert('funcție modul');
  }
  function func2() {
    alert('funcție modul');
  }
  function func3() {
    alert('funcție modul');
  }
  
  window.module = {func1: func1, func2: func2, func3: func3};
})();

Deoarece numele cheilor și variabilelor coincid, obiectul cu funcții poate fi simplificat:

javascript;(function() {
  function func1() {
    alert('funcție modul');
  }
  function func2() {
    alert('funcție modul');
  }
  function func3() {
    alert('funcție modul');
  }
  
  window.module = {func1, func2, func3};
})();

Putem merge și pe altă cale. Vom scrie funcțiile în obiect imediat la descrierea funcției, astfel:

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

Este dat următorul modul:

javascript;(function() {
  let str1 = 'variabilă modul';
  let str2 = 'variabilă modul';
  let str3 = 'variabilă modul';
  
  function func1() {
    alert('funcție modul');
  }
  function func2() {
    alert('funcție modul');
  }
  function func3() {
    alert('funcție modul');
  }
  function func4() {
    alert('funcție modul');
  }
  function func5() {
    alert('funcție modul');
  }
})();

Exportați în afară obiectul cu primele cinci funcții și primele două variabile.