การส่งออกอ็อบเจกต์ในโมดูลผ่านคลอเชอร์ใน JavaScript

สมมติว่าเรามีโมดูลต่อไปนี้:

javascript;(function() {
  function func1() {
    alert('ฟังก์ชันของโมดูล');
  }
  function func2() {
    alert('ฟังก์ชันของโมดูล');
  }
  function func3() {
    alert('ฟังก์ชันของโมดูล');
  }
})();

สมมติว่าเราต้องการส่งออกฟังก์ชันทั้งสามออกไปภายนอก ในกรณีนี้ เพื่อไม่ให้สร้างชื่อฟังก์ชันที่ไม่จำเป็นภายนอกโมดูลมากเกินไป ควรบันทึกฟังก์ชันทั้งหมดลงในอ็อบเจกต์เดียวและดำเนินการส่งออกอ็อบเจกต์นี้:

javascript;(function() {
  function func1() {
    alert('ฟังก์ชันของโมดูล');
  }
  function func2() {
    alert('ฟังก์ชันของโมดูล');
  }
  function func3() {
    alert('ฟังก์ชันของโมดูล');
  }
  
  window.module = {func1: func1, func2: func2, func3: func3};
})();

เนื่องจากชื่อคีย์และชื่อตัวแปรตรงกัน อ็อบเจกต์ที่มีฟังก์ชันสามารถทำให้ง่ายขึ้นได้:

javascript;(function() {
  function func1() {
    alert('ฟังก์ชันของโมดูล');
  }
  function func2() {
    alert('ฟังก์ชันของโมดูล');
  }
  function func3() {
    alert('ฟังก์ชันของโมดูล');
  }
  
  window.module = {func1, func2, func3};
})();

สามารถใช้วิธีอื่นได้เช่นกัน เราจะบันทึกฟังก์ชันลงในอ็อบเจกต์ทันทีเมื่ออธิบายฟังก์ชัน ดังนี้:

javascript;(function() {
  let module = {};
  
  module.func1 = function() {
    alert('ฟังก์ชันของโมดูล');
  }
  module.func2 = function() {
    alert('ฟังก์ชันของโมดูล');
  }
  module.func3 = function() {
    alert('ฟังก์ชันของโมดูล');
  }
  
  window.module = module;
})();
Задание 1

กำหนดโมดูลต่อไปนี้:

javascript;(function() {
  let str1 = 'ตัวแปรของโมดูล';
  let str2 = 'ตัวแปรของโมดูล';
  let str3 = 'ตัวแปรของโมดูล';
  
  function func1() {
    alert('ฟังก์ชันของโมดูล');
  }
  function func2() {
    alert('ฟังก์ชันของโมดูล');
  }
  function func3() {
    alert('ฟังก์ชันของโมดูล');
  }
  function func4() {
    alert('ฟังก์ชันของโมดูล');
  }
  function func5() {
    alert('ฟังก์ชันของโมดูล');
  }
})();

ส่งออกอ็อบเจกต์ที่มีฟังก์ชันห้าฟังก์ชันแรกและตัวแปรสองตัวแรกออกไปภายนอก