Приватност в стария стил в ООП в 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 + 'лв.';
  }
}