Privaciteit in oude stijl in OOP in JavaScript

Het declareren van privé-eigenschappen en methoden via het symbool # verscheen pas recentelijk in JavaScript. Daarvoor moest men gebruik maken van een speciale, ingenieuze techniek.

De essentie van deze techniek is dat er een afspraak wordt gemaakt dat de namen van privé-eigenschappen en methoden moeten beginnen met een underscore. In werkelijkheid zijn deze namen niet privé, maar we spreken af dat we ze niet van buiten de klasse zullen gebruiken.

Laten we het proberen. Laten we een privé-eigenschap maken in deze stijl:

javascriptclass User {
  constructor(name) {
    this._name = name;
  }
  
  show() {
    return this._name;
  }
}

Laten we een object van de klasse aanmaken:

javascriptlet user = new User('john', 'smit');

Laten we de methode aanroepen die de waarde van onze eigenschap weergeeft:

javascriptconsole.log(user.show());

Een poging om de eigenschap van buitenaf te benaderen leidt niet tot een fout:

javascriptconsole.log(user._name); // geen fout
Задание 1

Maak in de volgende code de eigenschappen privé:

javascriptclass Employee {
  constructor(name, salary) {
    this._name = name;
    this._salary = salary;
  }
  
  getName() {
    return this._name;
  }
  getSalary() {
    return this._salary;
  }
}
Задание 2

Maak in de volgende code de helpermethode privé:

javascriptclass Employee {
  constructor(name, salary) {
    this.name = name;
    this.salary = salary;
  }
  
  getSalary() {
    return this._addSign(this.salary);
  }
  
  _addSign(num) {
    return num + ' euro';
  }
}