Предности на сеттери и геттери во ООП во 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 во гетерот на плата направете така што при читање на платата на нејзината вредност да се додаде знакот за долар.