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

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

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

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

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

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

`let user = new User('john', 'smit');`

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

`console.log(user.show());`

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

`console.log(user._name); // ошибки нет`

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

`class Employee { constructor(name, salary) { this.name = name; this.salary = salary; } getName() { return this.name; } getSalary() { return this.salary; } }`

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

`class Employee { constructor(name, salary) { this.name = name; this.salary = salary; } getSalary() { return this.addSign(this.salary); } addSign(num) { return num + '$'; } }`
←→
↑