JavaScript-də OOP-də setter və getter-lərin üstünlükləri
Əvvəlki dərsdə biz hər bir xassə üçün getter və setter etdik. Sual yarana bilər ki, nə üçün belə mürəkkəbliklər lazımdır, həqiqətən də eyni effekti əldə etmək olar, əgər xassələri gizli deyil, ictimai etsək.
Məsələ ondadır ki, getter və setter-lərin üstünlüyü var: xassəyə müraciətdən əvvəl bəzi yoxlamalar yerinə yetirmək olar. Məsələn, bizim vəziyyətimizdə ad və soyadı yazarkən yeni dəyərin boş sətir olmadığını yoxlaya bilərik:
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;
}
}
Gəlin bunun necə işlədiyini yoxlayaq. Əvvəlcə sinif obyekti yaradaq:
let user = new User;
İndi düzgün dəyəri yazmağa çalışaq:
user.setName('john');
İndi isə səhv dəyəri yazmağa çalışaq:
user.setName(''); // səhv
Employee sinfində yaş setterində
yaşın 0 ilə 120 arasında
olması yoxlamasını edin.
Employee sinfində maaş getterində
elə edin ki, maaş oxunduqda onun
dəyərinin sonuna dollar işarəsi əlavə olunsun.