Izvoz spremenljivk in funkcij v modulih s pomočjo zaprtij v JavaScript

Včasih je potrebno narediti tako, da so nekatere spremenljivke in funkcije modula dostopne zunaj. Poglejmo, kako se to naredi. Recimo, da imamo naslednji modul:

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

Izvažajmo našo funkcijo func. Za to jo zapišimo v lastnost vgrajenega objekta brskalnika window:

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

Zdaj lahko pokličemo našo funkcijo zunaj modula:

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

window.func(); // izpiše 'funkcija modula'

Poleg tega ni nujno, da funkcijo kličemo kot lastnost objekta window:

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

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

Podan je naslednji modul:

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

Izvažajte eno od spremenljivk in dve poljubni funkciji.