ООПда JavaScriptда сеттер ва геттерларнинг афзалликлари
Олдинги дарсда биз ҳар бир хусусият учун геттер ва сеттер ясадик. Савол туғилиши мумкин, нега бундай мураккабликлар зарур, акси ҳолда худди шу эффектга эришиш мумкин, агар хусусиятларни хусусий эмас, оммавий қилиб қўйсак.
Гэп шундаки, геттер ва сеттерлар афзалликка эга: хусусиятга мурожаат қилишдан олдин баъзи текширишларни бажариш мумкин. Мисол учун, бизнинг ҳолимизда исм ва фамилияни ёзғанда, биз янги қиймат бўш сатр эмаслигини текширишимиз мумкин:
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;
}
}
Келинг, бу ишлашини текшириб кўрамиз. Аввало класс объектини яратамиз:
let user = new User;
Энди мос келувчи қийматни ёзға уринамиз:
user.setName('john');
Энди эса мос келмайдиган қийматни ёзға уринамиз:
user.setName(''); // хатолик
Employee классасида ёш
сеттерида ёш 0 дан
120 гача бўлишини текширинг.
Employee классасида маош
геттерида маош ўқилганда унинг
қиймати охирига доллар белгиси
қўшиладиган қилинг.