JavaScriptにおける従来のオブジェクト指向プログラミングでのプライバシー
プライベートプロパティとメソッドの宣言が記号#によって行われるようになったのは、JavaScriptではごく最近のことです。それ以前は、特別な巧妙な手法を利用する必要がありました。
この手法の要点は、プライベートプロパティやメソッドの名前はアンダースコア記号で始まるべきだという取り決めを設けることです。実際には、このような名前はプライベートにはなりませんが、クラスの外部からそれらを使用しないことに同意します。
試してみましょう。このスタイルでプライベートプロパティを作成します:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
クラスのオブジェクトを作成します:
let user = new User('john', 'smit');
プロパティの値を表示するメソッドを呼び出します:
console.log(user.show());
クラス外部からプロパティにアクセスしようとしても、エラーにはなりません:
console.log(user._name); // エラーなし
次のコードで、プロパティをプライベートにしてください:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getName() {
return this.name;
}
getSalary() {
return this.salary;
}
}
次のコードで、ヘルパーメソッドをプライベートにしてください:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this.addSign(this.salary);
}
addSign(num) {
return num + '
;
}
}