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