Приватность в старом стиле в ООП в JavaScript

Объявление приватных свойств и методов через символ # появилось в JavaScript совсем недавно. До этого приходилось пользоваться специальным хитрым приемом.

Суть этого приема в том, что заключается соглашение о том, что имена приватных свойств и методов должны начинаться с символа подчеркивания. Реально такие имена не будут приватными, но мы договариваемся о том, что не будем их использовать извне класса.

Давайте попробуем. Сделаем приватное свойство в таком стиле:

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

Создадим объект класса:

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

Вызовем метод, выводящий значение нашего свойства:

javascriptconsole.log(user.show());

Попытка обратиться к свойству извне класса не приведет к ошибке:

javascriptconsole.log(user._name); // ошибки нет
Задание 1

В следующем коде сделайте свойства приватными:

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

В следующем коде сделайте вспомогательный метод приватным:

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