ES2022で追加されたprivateメソッド。
他言語(C#やJava)のプライベートメソッドと同じクラス内からは呼び出し可能で、クラス外からは呼び出しが不可能なメソッドです。
機能の確認のために少しプログラムを組んでみましたが、C#を使い慣れている私にとってはクラスの構造がC#チックに記載できることで同じ感覚で書けるため、イメージがしやすくなりました。
プライベートで記述するにはprivate等のキーワードは使いません。その代わりに、メソッドやプロパティの先頭に「#」を付与することで動作する。
JavaScript
class Foo {
#x = 1;
#y = 2;
get getX() {
return this.#calcArea();
}
// private
#calcArea() {
return this.#x * this.#y;
}
}
別のクラスからgetX()を呼べばプライベートメソッドのcalcArea()から2という結果が返ってきます。
また、別クラスからプライベートメソッド(calcArea())を呼んだ場合は「例外」が返ってきます。
JavaScript
const foo = new Foo ();
console.log(foo.getX());
console.log(foo.#calcArea());
これによって、JavaScriptでも秘匿性を維持しながらコードを書くことができるので積極的に使いたいですね。
過去には「_」アンダースコア付けてprivateとして扱うなどもしていましたが、人によってはそれを無視してプロパティやメソッドを使う人もいるわけなのでそう考えると秘匿性は重要だと感じますね。
記事が面白かった方、参考になった方は、是非「イイね」お願いします👍