Yksityiset menetelmät OOP:ssa JavaScriptissä
Eivät vain ominaisuudet, vaan myös menetelmät voivat olla yksityisiä. Yleensä yksityisiksi tehdään apumenetelmiä, jotta niitä ei vahingossa kutsuttaisi luokan ulkopuolelta.
Katsotaanpa esimerkkiä. Olkoon meillä seuraava luokka:
class User {
#name;
constructor(name) {
this.#name = name;
}
show() {
return this.#name;
}
}
Tehdään tähän luokkaan yksityinen menetelmä, joka parametrina vastaanottaa merkkijonon ja tekee sen ensimmäisestä merkistä ison kirjaimen:
class User {
#name;
constructor(name) {
this.#name = name;
}
show() {
return this.#name;
}
#cape(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Hyödynnetään apumenetelmäämme toisen menetelmän sisällä:
class User {
#name;
constructor(name) {
this.#name = name;
}
show() {
return this.#cape(this.#name);
}
#cape(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Testataan. Luodaan luokastamme olio:
let user = new User('john');
Kutsutaan julkista menetelmää, joka käyttää apumenetelmää:
console.log(user.show());
Seuraavassa koodissa tee apumenetelmästä yksityinen:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this.addSign(this.salary);
}
addSign(num) {
return num + '€';
}
}