Konflikty názvů metod a vlastností v OOP v JavaScriptu
Názvy vlastností a metod by neměly shodovat, to způsobí konflikt. Podívejme se na příklad. Předpokládejme, že máme následující třídu:
class User {
name() {
console.log('metoda');
}
}
Vytvořme objekt této třídy:
let user = new User;
Zavolejme jeho metodu, zatím vše bude fungovat:
user.name(); // funguje
A nyní zapišme data do stejnojmenné vlastnosti, čímž přepíšeme kód metody:
user.name = 'str';
user.name(); // chyba
Pro vyhnutí se podobným konfliktům vždy dávejte metodům jména-slovesa, a vlastnostem - jména-podstatná jména.
Opravte chybu, které byla v následujícím kódu:
class Employee {
constructor(salary) {
this.salary = salary;
}
salary() {
return this.salary + '
;
}
}