JavaScript да модулларда объектни экспорт қилиш: closure (ёрниқ) орқали

Фарз қилайлик, бизда куйидаги модул бор:

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

Фарз қилайлик, биз учла функцияни ҳам ташқарига экспорт қилмоқчимиз. Бу ҳолатда, модул ташқарисида қўшимча функция номларини кўпайтирмаслик учун, барча функцияларни битта объектга ёзиб, шу объектни экспорт қилиш мақсадга мувофиқ:

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};
})();

Калит сўзлар ва ўзгарувчи номлари мос келгани сабабли, функциялар билан объектни соддалаштириш мумкин:

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

Яна бошқа йўл билан ҳам бориш мумкин. Функцияларни тавсифлаш жараёнидай ўзида объектга ёзамиз, мана бу йўл билан:

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

Куйидаги модул берилган:

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');
  }
})();

Ташқарига биринчи бешта функция ва биринчи иккита ўзгарувчи билан объектни экспорт қилинг.