JavaScript-daky OOP-de setter we getterleriň artykmaçlyklary
Öňki sapakda her bir häsiýet üçin getter we setter ýasadyk. Soňam näme üçin şeýle çylşyrymlylyklar gerek, diýen sowal ýüze çykyp biler, sebäbi şol bir netijä ýetmek mümkün, eger häsiýetleri gizlin däl, umumy etsekem.
Mesele şonda, getter we setterleriň artykmaçlygy bar: häsiýete ýüz tutmazdan öň käbir barlaglar ýerine ýetirip bolýar. Mysal üçin, bizim ýagdaýymyzda ady we familiýany ýazdyrylanda, täze bahanyň boş setir däldigini barlap bolýar:
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;
}
}
Geliň, munyň nädip işleýändigini barlalyň. Ilki bilen klasyň objektini döredeliň:
let user = new User;
Indi bolsa dogry bahany ýazmaga synanyşalyň:
user.setName('john');
Indi bolsa ýalňyşyny ýazmaga synanyşalyň:
user.setName(''); // ýalňyş
Employee klasynda ýaşyň
setterinde şunuň ýaly barlag ediň,
ýaş 0-dan 120 çenli bolmaly.
Employee klasynda aýlyk hakyň
getterinde şeýle ediň, ýöne
aýlyk hak okalanda onuň
bahasyňyň ahyryna dollar nyşany goşulsyn.