Esportazione di oggetti nei moduli tramite chiusure in JavaScript

Supponiamo di avere il seguente modulo:

javascript;(function() {
  function func1() {
    alert('funzione del modulo');
  }
  function func2() {
    alert('funzione del modulo');
  }
  function func3() {
    alert('funzione del modulo');
  }
})();

Supponiamo di voler esportare tutte e tre le funzioni. In questo caso, per non creare troppi nomi di funzioni all'esterno del modulo, è meglio inserire tutte le funzioni in un unico oggetto ed eseguire l'esportazione di questo oggetto:

javascript;(function() {
  function func1() {
    alert('funzione del modulo');
  }
  function func2() {
    alert('funzione del modulo');
  }
  function func3() {
    alert('funzione del modulo');
  }
  
  window.module = {func1: func1, func2: func2, func3: func3};
})();

Poiché i nomi delle chiavi e delle variabili coincidono, l'oggetto con le funzioni può essere semplificato:

javascript;(function() {
  function func1() {
    alert('funzione del modulo');
  }
  function func2() {
    alert('funzione del modulo');
  }
  function func3() {
    alert('funzione del modulo');
  }
  
  window.module = {func1, func2, func3};
})();

Si può procedere anche in un altro modo. Inseriamo le funzioni nell'oggetto direttamente quando definiamo la funzione, in questo modo:

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

È dato il seguente modulo:

javascript;(function() {
  let str1 = 'variabile del modulo';
  let str2 = 'variabile del modulo';
  let str3 = 'variabile del modulo';
  
  function func1() {
    alert('funzione del modulo');
  }
  function func2() {
    alert('funzione del modulo');
  }
  function func3() {
    alert('funzione del modulo');
  }
  function func4() {
    alert('funzione del modulo');
  }
  function func5() {
    alert('funzione del modulo');
  }
})();

Esporta all'esterno un oggetto con le prime cinque funzioni e le prime due variabili.