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

← →
↑