Voordele van setters en getters in OOP in JavaScript

In die vorige les het ons vir elke eienskap 'n getter en setter gemaak. Die vraag kan ontstaan: hoekom is sulke kompleksiteite nodig, aangesien feitlik dieselfde effek bereik kan word deur die eienskappe publiek te maak, nie privaat nie.

Die saak is dat getters en setters 'n voordeel het: voor toegang tot die eienskap kan sekere kontroles uitgevoer word. Byvoorbeeld, in ons geval kan ons by die skryf van die naam en van die nuwe waarde verifieer dat dit nie 'n leë string is nie:

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

Kom ons toets hoe dit werk. Laat ons eers 'n objek van die klas skep:

javascriptlet user = new User;

Laat ons nou probeer om 'n korrekte waarde te skryf:

javascriptuser.setName('john');

En laat ons nou probeer om 'n onkorrekte een te skryf:

javascriptuser.setName(''); // fout
Задание 1

Maak in die klas Employee in die setter van ouderdom 'n kontrole dat die ouderdom van 0 tot 120 moet wees.

Задание 2

Maak in die klas Employee in die getter van salaris so dat by die lees van die salaris 'n dollarteken aan die einde van sy waarde gevoeg word.