Privatsphäre im alten Stil in OOP in JavaScript

Die Deklaration privater Eigenschaften und Methoden durch das Symbol # erschien in JavaScript erst vor kurzer Zeit. Davor musste man einen speziellen, kniffligen Trick anwenden.

Der Kern dieses Tricks besteht darin, eine Vereinbarung zu treffen, dass die Namen privater Eigenschaften und Methoden mit einem Unterstrich beginnen müssen. In der Realität sind solche Namen nicht privat, aber wir vereinbaren, dass wir sie nicht von außerhalb der Klasse verwenden werden.

Lassen Sie es uns versuchen. Erstellen wir eine private Eigenschaft in diesem Stil:

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

Erstellen wir ein Objekt der Klasse:

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

Rufen wir die Methode auf, die den Wert unserer Eigenschaft ausgibt:

javascriptconsole.log(user.show());

Der Versuch, von außerhalb der Klasse auf die Eigenschaft zuzugreifen, führt zu keinem Fehler:

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

Machen Sie im folgenden Code die Eigenschaften privat:

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

Machen Sie im folgenden Code die Hilfsmethode privat:

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