Преимущества сеттеров и геттеров в ООП в 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
в геттере
зарплаты сделайте так, чтобы
при чтении зарплаты в конец ее
значения добавлялся знак доллара.