A getterek és setterek előnyei az OOP-ben JavaScriptben
Az előző leckében minden tulajdonsághoz készítettünk gettert és settert. Felmerülhet a kérdés, miért szükségesek ilyen bonyolultságok, hiszen gyakorlatilag ugyanazt az eredményt el lehet érni, ha a tulajdonságokat nyilvánossá tesszük, nem pedig priváttá.
A dolog az, hogy a gettereknek és settereknek van előnyük: a tulajdonsághoz való hozzáférés előtt végezhetünk néhány ellenőrzést. Például a mi esetünkben a név és vezetéknév beállításakor ellenőrizhetjük, hogy az új érték nem üres sztring-e:
class User {
#name;
#surn;
setName(name) {
if (name.length > 0) {
this.#name = name;
} else {
throw new Error('name is incorrect');
}
}
setSurn(surn) {
if (surn.length > 0) {
this.#surn = surn;
} else {
throw new Error('surn is incorrect');
}
}
getName() {
return this.#name;
}
getSurn() {
return this.#surn;
}
}
Nézzük meg, hogyan működik ez. Először hozzunk létre egy objektumot az osztályból:
let user = new User;
Most próbáljunk meg beállítani egy helyes értéket:
user.setName('john');
És most próbáljunk meg beállítani egy helytelen értéket:
user.setName(''); // hiba
A Employee osztályban a kor
setterében végezz ellenőrzést arra,
hogy a kornak
0 és 120 között kell lennie.
A Employee osztályban a fizetés
getterében állítsd be úgy,
hogy a fizetés olvasásakor annak
értéke végére dollárjel kerüljön.