ობიექტზე-ორიენტირებულ პროგრამირებაში მეთოდების და თვისებების სახელების კონფლიქტები 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 + '
;
  }
}