問題タブ [defineproperty]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
9780 参照

javascript - 外部に対して読み取り専用のプロパティを作成しますが、メソッドは引き続き設定できます

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

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

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

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

0 投票する
3 に答える
1878 参照

javascript - defineProperty 内の getter で値にアクセスする

defineProperty 呼び出し内で定義した値にアクセスできますか? 私はこのようなものを作成したい:

現在、プロパティごとに 2 番目の属性を作成する必要があります。

いつも助けてくれてありがとう!

0 投票する
0 に答える
184 参照

javascript - Chrome ブラウザーで項目を配列する defineProperty

配列定義要素の問題。すべてのデータをクリアした後、要素は配列にまだ存在しますが、配列の長さは0の値を返します。配列を再度埋めようとすると、配列が空であることがわかりませんでした。

さまざまな方法で配列をクリアしようとしていました

しかし、最後の要素が配列から削除された後、配列は常に古い値を持ちます...

ここに例があります

私は何を間違っていますか?

Chrome ブラウザーでは最新バージョンでのみ発生し、他のブラウザーではすべて問題ありません。

35.0.1916.153 m で動作していますが、37.0.2062.94 m では動作していません。

また、クロム トラッカーでチケットを作成しましたこちら.

0 投票する
1 に答える
232 参照

javascript - Javascript の defineProperty オブジェクトで setter を条件付きで呼び出し/呼び出しを防止する

defineProperty で Javascript の set 関数をキャッチし、いくつかのロジックを実行してから、元の set 関数の呼び出しを実際に許可するかどうかを決定する方法はありますか?

0 投票する
1 に答える
632 参照

javascript - 「削除」要素メソッドを定義しようとしている Safari JavaScript エラー

私の個人的なライブラリにはいくつかの定義がありますが、これは Safari でエラーを生成しています:

エラー: TypeError: 構成不可能なプロパティの列挙可能な属性を変更しようとしています。

このフレーズの正確な意味がわかりません。FireFox では、このエラーは発生しません。

0 投票する
1 に答える
3914 参照

javascript - JavaScript オブジェクトからセッターを削除するには?

次のコードを検討してください。

o.y私の目的は、セッターが一度呼び出された後、セッターを削除してプロパティを構成不可にすることです。ただし、期待どおりに機能しません。

そのため、私のコードは期待どおりに機能せず、他の解決策は考えられません。したがって、この質問。