Izvoz promenljivih i funkcija u modulima putem zatvaranja u JavaScriptu

Ponekad je potrebno da se neke promenljive i funkcije modula učine dostupnim spolja. Pogledajmo kako se to radi. Neka imamo sledeći modul:

javascript;(function() {
  let str = 'promenljiva modula';
  
  function func() {
    alert('funkcija modula');
  }
})();

Hajde da izvezemo našu funkciju func. Za to ćemo je upisati u svojstvo ugrađenog u brauzer objekta window:

javascript;(function() {
  let str = 'promenljiva modula';
  
  function func() {
    alert('funkcija modula');
  }
  
  window.func = func;
})();

Sada možemo pozvati našu funkciju spolja modula:

javascript;(function() {
  let str = 'promenljiva modula';
  
  function func() {
    alert('funkcija modula');
  }
  
  window.func = func;
})();

window.func(); // ispisaće 'funkcija modula'

Pritom nije neophodno pozivati funkciju kao svojstvo objekta window:

javascript;(function() {
  let str = 'promenljiva modula';
  
  function func() {
    alert('funkcija modula');
  }
  
  window.func = func;
})();

func(); // ispisaće 'funkcija modula'
Задание 1

Dat je sledeći modul:

javascript;(function() {
  let str1 = 'promenljiva modula';
  let str2 = 'promenljiva modula';
  let str3 = 'promenljiva modula';
  
  function func1() {
    alert('funkcija modula');
  }
  function func2() {
    alert('funkcija modula');
  }
  function func3() {
    alert('funkcija modula');
  }
})();

Izvezite napolje jednu od promenljivih i dve bilo koje funkcije.