Приватные методы в ООП в JavaScript

Приватными могут быть не только свойства, но и методы. Обычно приватными делают вспомогательные методы, чтобы они случайно не могли быть вызваны извне класса.

Давайте посмотрим на примере. Пусть у нас есть следующий класс:

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

Сделаем в этом классе приватный метод, который параметром будет принимать строку и делать заглавным ее первый символ:

javascriptclass User {
  #name;
  
  constructor(name) {
    this.#name = name;
  }
  
  show() {
    return this.#name;
  }
  
  #cape(str) {
    return str[0].toUpperCase() + str.slice(1);
  }
}

Воспользуемся нашим вспомогательным методом внутри другого метода:

javascriptclass User {
  #name;
  
  constructor(name) {
    this.#name = name;
  }
  
  show() {
    return this.#cape(this.#name);
  }
  
  #cape(str) {
    return str[0].toUpperCase() + str.slice(1);
  }
}

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

javascriptlet user = new User('john');

Вызовем публичный метод, использующий вспомогательный:

javascriptconsole.log(user.show());
Задание 1

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

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