Махфияти қадима дар ООП дар 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 + '₽';
  }
}