ข้อดีของ Setters และ Getters ใน OOP ใน JavaScript

ในบทเรียนที่แล้วเราได้สร้าง getter และ setter สำหรับ แต่ละคุณสมบัติ อาจมีคำถามว่า ทำไมต้องใช้ ความซับซ้อนดังกล่าว เพราะในทางปฏิบัติ สามารถบรรลุผลเดียวกันได้ หาก ทำให้คุณสมบัติเป็นสาธารณะ แทนที่จะเป็นส่วนตัว

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

javascriptclass User {
  #name;
  #surn;
  
  setName(name) {
    if (name.length > 0) {
      this.#name = name;
    } else {
      throw new Error('name is incorrect');
    }
  }
  setSurn(surn) {
    if (surn.length > 0) {
      this.#surn = surn;
    } else {
      throw new Error('surn is incorrect');
    }
  }
  
  getName() {
    return this.#name;
  }
  getSurn() {
    return this.#surn;
  }
}

มาทดสอบกันว่านี่ทำงานอย่างไร เริ่มต้นด้วยการสร้างออบเจ็กต์ของคลาส:

javascriptlet user = new User;

ทีนี้ลองเขียน ค่าที่ถูกต้อง:

javascriptuser.setName('john');

และตอนนี้ลองเขียน ค่าที่ไม่ถูกต้อง:

javascriptuser.setName(''); // ข้อผิดพลาด
Задание 1

ในคลาส Employee ใน setter ของอายุ ให้ทำการตรวจสอบว่า อายุควรอยู่ระหว่าง 0 ถึง 120

Задание 2

ในคลาส Employee ใน getter ของเงินเดือน ให้ทำดังนี้ เมื่ออ่านเงินเดือน ในตอนท้ายของ ค่า ให้เพิ่มเครื่องหมายดอลลาร์