Përparësitë e setters dhe getters në OOP në JavaScript
Në mësimin e mëparshëm ne krijuam për çdo veti një getter dhe një setter. Mund të lindë pyetja, pse janë të nevojshme komplikime të tilla, në fund të fundit të njëjtin efekt mund ta arrini nëse i bëni vetitë publike, jo private.
Çështja është se getters dhe setters kanë përparësi: para aksesimit te vetisë mund të kryhen disa kontroll. Për shembull, në rastin tonë ne gjatë caktimit të emrit dhe mbiemrit mund të kontrollojmë, që vlera e re të mos jetë varg bosh:
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;
}
}
Le të kontrollojmë se si funksionon kjo. Së pari le të krijojmë një objekt të klasës:
let user = new User;
Tani le të përpiqemi të caktojmë një vlerë korrekte:
user.setName('john');
Dhe tani le të përpiqemi të caktojmë një vlerë jokorrekte:
user.setName(''); // gabim
Në klasën Employee në setter
e moshes bëni kontrollin që
mosha duhet të jetë
nga 0 deri në 120.
Në klasën Employee në getter
e pagës bëni që
gjatë leximit të pagës në fund të
vlerës së saj të shtohet shenja e dollarit.