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 + '
;
  }
}