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