ความขัดแย้งของชื่อเมธอดและคุณสมบัติใน OOP ใน JavaScript

ชื่อของคุณสมบัติและเมธอดไม่ควร ซ้ำกัน มันจะทำให้เกิดความขัดแย้ง ลองดูตัวอย่างกัน สมมติว่าเรามีคลาส ต่อไปนี้:

javascriptclass User {
  name() {
    console.log('method');
  }
}

สร้างออบเจ็กต์ของคลาสนี้:

javascriptlet user = new User;

เรียกใช้เมธอดของมัน ในขณะที่ ทุกอย่างยังทำงาน:

javascriptuser.name(); // ทำงาน

และตอนนี้ให้เขียนข้อมูลลงในคุณสมบัติที่ชื่อเดียวกัน จึงลบโค้ดของ เมธอดไป:

javascriptuser.name = 'str';
user.name(); // ข้อผิดพลาด

เพื่อหลีกเลี่ยงความขัดแย้งดังกล่าว ควรตั้งชื่อเมธอดเป็นคำกริยาเสมอ และตั้งชื่อคุณสมบัติเป็นคำนาม

Задание 1

แก้ไขข้อผิดพลาดที่เกิดขึ้น ในโค้ดต่อไปนี้:

javascriptclass Employee {
  constructor(salary) {
    this.salary = salary;
  }
  salary() {
    return this.salary + '₽';
  }
}