ข้อดีของ Setters และ Getters ใน OOP ใน JavaScript
ในบทเรียนที่แล้วเราได้สร้าง getter และ setter สำหรับ แต่ละคุณสมบัติ อาจมีคำถามว่า ทำไมต้องใช้ ความซับซ้อนดังกล่าว เพราะในทางปฏิบัติ สามารถบรรลุผลเดียวกันได้ หาก ทำให้คุณสมบัติเป็นสาธารณะ แทนที่จะเป็นส่วนตัว
ประเด็นคือ getters และ setters มี ข้อได้เปรียบ: ก่อนเข้าถึงคุณสมบัติ สามารถดำเนินการตรวจสอบบางอย่างได้ ตัวอย่างเช่น ในกรณีของเรา เมื่อเขียน ชื่อและนามสกุล เราสามารถตรวจสอบ ว่าค่าใหม่ไม่ใช่ สตริงว่าง:
class 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;
}
}
มาทดสอบกันว่านี่ทำงานอย่างไร เริ่มต้นด้วยการสร้างออบเจ็กต์ของคลาส:
let user = new User;
ทีนี้ลองเขียน ค่าที่ถูกต้อง:
user.setName('john');
และตอนนี้ลองเขียน ค่าที่ไม่ถูกต้อง:
user.setName(''); // ข้อผิดพลาด
ในคลาส Employee ใน setter
ของอายุ ให้ทำการตรวจสอบว่า
อายุควรอยู่ระหว่าง
0 ถึง 120
ในคลาส Employee ใน getter
ของเงินเดือน ให้ทำดังนี้
เมื่ออ่านเงินเดือน ในตอนท้ายของ
ค่า ให้เพิ่มเครื่องหมายดอลลาร์