15

JavaScript (ES5+) では、次のシナリオを達成しようとしています。

  1. .size直接プロパティ読み取りを介して外部から読み取ることができるが、外部から設定することはできない読み取り専用プロパティを持つオブジェクト (多くの個別のインスタンスが存在します) 。
  2. プロパティは.size、プロトタイプにある (プロトタイプにとどまる必要がある) いくつかのメソッドから維持/更新する必要があります。
  3. 私の API は仕様によって既に定義されているため、それを変更することはできません (既に定義されている ES6 オブジェクトのポリフィルに取り組んでいます)。
  4. 私は主に、人々が誤って自分の足を撃ってしまうのを防ごうとしており、実際には防弾読み取り専用にする必要はありません (防弾が強ければ強いほど良いですが)。直接設定が許可されていない限り、プロパティへのサイドドアアクセスobj.size = 3;

コンストラクターで宣言されたプライベート変数を使用して、それを読み取るゲッターを設定できることは承知していますが、その変数を維持する必要があるメソッドをプロトタイプから移動し、コンストラクター内でも宣言する必要があります (したがって、変数を含むクロージャにアクセスできます)。この特定の状況では、プロトタイプからメソッドを削除したくないので、他のオプションが何であるかを探しています。

他にどのようなアイデアがあるでしょうか (妥協点はあるものの)?

4

3 に答える 3

11
于 2014-05-23T06:38:56.477 に答える