Voordelen van setters en getters in OOP in JavaScript

In de vorige les hebben we voor elke eigenschap een getter en setter gemaakt. Men zou zich kunnen afvragen waarom zulke complexiteit nodig is, want in feite kan hetzelfde effect worden bereikt door de eigenschappen publiek te maken in plaats van privé.

Het punt is dat getters en setters een voordeel hebben: voor toegang tot de eigenschap kunnen er enkele controles worden uitgevoerd. In ons geval kunnen we bijvoorbeeld bij het opslaan van de voor- en achternaam controleren of de nieuwe waarde geen lege string is:

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

Laten we testen hoe dit werkt. Laten we eerst een object van de klasse aanmaken:

javascriptlet user = new User;

Laten we nu proberen een correcte waarde op te slaan:

javascriptuser.setName('john');

En laten we nu proberen een incorrecte op te slaan:

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

Maak in de klasse Employee in de setter voor leeftijd een controle dat de leeftijd tussen 0 en 120 moet liggen.

Задание 2

Zorg in de klasse Employee in de getter voor salaris ervoor dat bij het uitlezen van het salaris aan het einde ervan een dollarteken wordt toegevoegd.