Menetelmien ja ominaisuuksien nimien ristiriidat OOP:ssa JavaScriptissä
Ominaisuuksien ja menetelmien nimet eivät saa osua yhteen, se aiheuttaa ristiriidan. Katsotaanpa esimerkkiä. Olkoon meillä seuraava luokka:
class User {
name() {
console.log('method');
}
}
Luodaan tämän luokan olio:
let user = new User;
Kutsutaan sen menetelmää, toistaiseksi kaikki toimii:
user.name(); // toimii
Kirjoitetaan nyt data samannimiseen ominaisuuteen, ylikirjoittaen näin menetelmän koodin:
user.name = 'str';
user.name(); // virhe
Tällaisten ristiriitojen välttämiseksi anna aina menetelmille verbi-nimiä ja ominaisuuksille substantiivi-nimiä.
Korjaa seuraavassa koodissa tehty virhe:
class Employee {
constructor(salary) {
this.salary = salary;
}
salary() {
return this.salary + '
;
}
}