Конфликты имен методов и свойств в ООП в 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 + '$';
}
}