ความขัดแย้งของชื่อเมธอดและคุณสมบัติใน OOP ใน JavaScript
ชื่อของคุณสมบัติและเมธอดไม่ควร ซ้ำกัน มันจะทำให้เกิดความขัดแย้ง ลองดูตัวอย่างกัน สมมติว่าเรามีคลาส ต่อไปนี้:
class User {
name() {
console.log('method');
}
}
สร้างออบเจ็กต์ของคลาสนี้:
let user = new User;
เรียกใช้เมธอดของมัน ในขณะที่ ทุกอย่างยังทำงาน:
user.name(); // ทำงาน
และตอนนี้ให้เขียนข้อมูลลงในคุณสมบัติที่ชื่อเดียวกัน จึงลบโค้ดของ เมธอดไป:
user.name = 'str';
user.name(); // ข้อผิดพลาด
เพื่อหลีกเลี่ยงความขัดแย้งดังกล่าว ควรตั้งชื่อเมธอดเป็นคำกริยาเสมอ และตั้งชื่อคุณสมบัติเป็นคำนาม
แก้ไขข้อผิดพลาดที่เกิดขึ้น ในโค้ดต่อไปนี้:
class Employee {
constructor(salary) {
this.salary = salary;
}
salary() {
return this.salary + '₽';
}
}