◆ prototype にメソッド追加してみても無理だった

プライベートプロパティは不要という話

JavaScript のクラス定義でプライベートプロパティが使えるようになりましたが 他の言語でいうリフレクションみたいな方法で無理やりアクセスする手段は無いようです
見せるべきじゃないプロパティを区別することは良いことですが 完全にアクセス不能は不便すぎます
これまででも _ から始めるのをプライベート扱いみたいなのがありましたが いろいろな問題で仕方なく プライベート扱いの変数を操作することで可能だった回避策も多くあります
プライベートプロパティを使ってしまうとそういう最終手段すら使えなくなります
ライブラリのソースコードをローカルにコピーしてソースレベルで修正してそれを使うこともできますが ソースはそのままにプライベートプロパティのアクセスで解決できるなら公式リリースのままのソースコードで CDN 経由で使いたいものです

そういうことを考えると通常の方法ではアクセスできなくてもなんらかのアクセス手段は残しておいてほしいものです
Python だと全部オープンなので要らない情報が多すぎて邪魔と思ったこともありますが できないよりもできるのほうがいいので Python の考え方のほうがいいなと思うようになりました

JavaScript 関連でも ShadowDOM で open/closed で closed を選ぶことも可能ですが 基本的に open にすべきだとも言われていますしね
closed にするとライブラリが ShadowDOM 内も解析して機能を提供する場合 それが不可能になったり 存在しない機能のために直接 DOM 操作で対応しようにもそれが許可されていなかったり不便さのほうが多いです

自分で書く分には 使わなければいいだけです
わざわざ入力しづらい # を書きたくもないので特別な理由でもないと使わないと思います
問題はプライベート使いたい人が使うことで 使われたライブラリなどの自由度が落ちることです
これまででもクロージャを使えばそういう仕組みは作れましたが クラス構文で使えると簡単に作れるので使う人が多くなるように思います
通常のプロパティアクセスは無理でも 特殊な方法でどうにかならないかいろいろ試してみました

いろいろ試したけどアクセス無理そう

まずは普通に外からアクセスします

class A {
#p = 10
}

const a = new A()
a.#p
// SyntaxError: Private field '#p' must be declared in an enclosing class

エラーですね

このプロパティアクセスを内部で this.#p のように行えば取得できます

class A {
#p = 10
getP() {
return this.#p
}
}
new A().getP()
// 10

それならこの getP をあとからつければどうでしょうか

class A {
#p = 10
}

const a = new A()

a.getP = function() {
return this.#p
}
// SyntaxError: Private field '#p' must be declared in an enclosing class

ダメでした
class 構文の中じゃないと #p という構文が使えないようです

なら別の prototype から持ってきてみましょう

class B {
#p = 20
getP() {
return this.#p
}
}

new B().getP()
// 20

こういう B クラスを定義します
そして A の prototype に移動します

A.prototype.getP = B.prototype.getP
a.getP()
// TypeError: Cannot read private member #p from an object whose class did not declare it

別クラスのプライベートプロパティは使えないというエラーです

継承したクラス というのも考えましたがプライベートプロパティは継承した子クラスでも使えない完全プライベートです

一応 Reflect という機能もありますが これでもプライベートプロパティの取得は対応していませんでした

Reflect.get({ value: 100 }, "value")
// 100

Reflect.get(new class { #p = 10 }, "#p")
// undefined

まとめ

あとからメソッド追加でアクセスできればよかったのですが それも無理だったので本当にアクセス手段は用意されてなさそうです
Reflection に privateGet みたいなのが追加されてくれるといいですが それよりもプライベートプロパティがむやみに使われないことを願いたいものです