Перавагі сетэраў і гетэраў у ААП у JavaScript

У папярэднім уроке мы зрабілі для кожнага ўласцівасці гетэр і сетэр. Можа ўзнікнуць пытанне, навошта патрэбныя такія складанасці, бо фактычна таго ж самага эфекту можна дасягнуць, калі зрабіць ўласцівасці публічнымі, а не прыватнымі.

Справа ў тым, што гетэры і сетэры маюць перавагу: перад зваротам да ўласцівасці можна выконваць некаторыя праверкі. Напрыклад, у нашым выпадку мы пры запісе імені і прозвішча можам праверыць, што новае значэнне не з'яўляецца пустым радком:

javascriptclass 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;
  }
}

Давайце праверым, як гэта працуе. Для пачатку створым аб'ект класа:

javascriptlet user = new User;

Цяпер паспрабуем запісаць карэктнае значэнне:

javascriptuser.setName('john');

А цяпер паспрабуем запісаць некарэктнае:

javascriptuser.setName(''); // памылка
Задание 1

У класе Employee у сетэры ўзросту зрабіце праверку на тое, што ўзрост павінен быць ад 0 да 120.

Задание 2

У класе Employee у гетэры зарплаты зрабіце так, каб пры чытанні зарплаты ў канец яе значэння дадаваўся знак даляра.