Objektum exportálása modulokban closure-ök segítségével JavaScriptben

Tegyük fel, hogy a következő modulunk van:

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

Tegyük fel, hogy mindhárom függvényt ki szeretnénk exportálni. Ebben az esetben, hogy ne szaporítsunk felesleges függvényneveket a modulon kívül, jobb, ha minden függvényt egy objektumba írunk, és exportáljuk ezt az objektumot:

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

Mivel a kulcsnevek és a változónevek megegyeznek, az objektum függvényekkel leegyszerűsíthető:

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

Más úton is elmehetünk. Rögzítsük a függvényeket az objektumba közvetlenül a függvény deklarálásakor, így:

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

Adott a következő modul:

javascript;(function() {
  let str1 = 'module variable';
  let str2 = 'module variable';
  let str3 = 'module variable';
  
  function func1() {
    alert('module function');
  }
  function func2() {
    alert('module function');
  }
  function func3() {
    alert('module function');
  }
  function func4() {
    alert('module function');
  }
  function func5() {
    alert('module function');
  }
})();

Exportálja ki az objektumot az első öt függvénnyel és az első két változóval.