Privatitet i gammel stil i OOP i JavaScript

Erklæring af private egenskaber og metoder gennem symbolet # dukkede op i JavaScript for nylig. Før det var man nødt til at bruge en speciel snedig teknik.

Essensen af denne teknik er, at man indgår en aftale om, at navnene på private egenskaber og metoder skal starte med en understregning. Reelt set vil sådanne navne ikke være private, men vi aftaler, at vi ikke vil bruge dem udefra klassen.

Lad os prøve. Lad os lave en privat egenskab i denne stil:

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

Lad os oprette et objekt af klassen:

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

Lad os kalde metoden, der viser værdien af vores egenskab:

javascriptconsole.log(user.show());

Et forsøg på at tilgå egenskaben udefra klassen vil ikke resultere i en fejl:

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

Gør egenskaberne private i følgende kode:

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

Gør hjælpemetoden privat i følgende kode:

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