Zasebnost v starem slogu v OOP v JavaScript

Deklaracija zasebnih lastnosti in metod prek simbola # se je v JavaScriptu pojavila šele pred kratkim. Pred tem so morali uporabljati posebno zapleteno tehniko.

Bistvo te tehnike je v sklenitvi dogovora, da se morajo imena zasebnih lastnosti in metod začeti s podčrtajem. Dejansko ta imena ne bodo zasebna, vendar se dogovorimo, da jih ne bomo uporabljali zunaj razreda.

Poskusimo. Naredimo zasebno lastnost v tem slogu:

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

Ustvarimo objekt razreda:

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

Pokličimo metodo, ki prikaže vrednost naše lastnosti:

javascriptconsole.log(user.show());

Poskus dostopa do lastnosti od zunaj razreda ne bo povzročil napake:

javascriptconsole.log(user._name); // ni napake
Задание 1

V naslednji kodi naredite lastnosti zasebne:

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

V naslednji kodi naredite pomožno metodo zasebno:

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