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



Чат с GPT Компилятор