問題タブ [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 投票する
1 に答える
15403 参照

javascript - アクセサー プロパティのエラー: 構成不可能なプロパティ 'status' を再定義できません

オブジェクトを定義し、そのアクセサ プロパティを作成しようとしています。

HTML:

JavaScript:

しかし、私がそれを使用すると、質問のタイトルに記載されているエラーがスローされます:

スロー:

TypeError: 構成不可能なプロパティ 'mode' を再定義できません

ここで何が問題なのですか?

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

javascript - Object.defineProperty 呼び出しを元に戻すにはどうすればよいですか?

フィドル

defineProperty呼び出しを元に戻すために、ES5 にはどのようなオプションがありますか?

ばかげた提案はありませんObject.defineProperty = function() { }

以下Object.defineProperty(Object.prototype, 'should', {})

動作しませ

Object.defineProperty(Object.prototype, 'should', { value: undefined })

Uncaught TypeError: Cannot redefine property: definePropertyV8 でaをスローします。

同じエラーをスローします

delete Object.prototype.shouldまた、動作しません

0 投票する
2 に答える
2818 参照

javascript - JavaScript の getter/setter をネイティブの構成不可能なプロパティに追加する

オブジェクトのプロパティに加えられた変更を傍受するために特別なゲッター/セッターを使用していますが、現在、通常のユーザー定義のプロパティに対してうまく機能しています。ただし、またはのような組み込みプロパティに同じアイデアを採用できれば幸いです、これらは残念ながら構成不可として定義されているため、ゲッター/セッターを使用して再定義しようとするとエラーが発生します。HTMLInputElement.valueArray.length

内部操作を壊さずにこれらを強制的に再定義するためにできる(信頼できる)ハックがあるかどうか疑問に思っています。

そうでない場合は、ネイティブ プロパティに単純にマップして代わりに使用する、これらすべての代替プロパティを定義することを余儀なくされる可能性がありますが、それは理想的ではありません。

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

javascript - 構成不可能なプロパティ記述子の[列挙可能性と]書き込み可能性を設定できるのはなぜですか?

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/definePropertyの状態:

構成可能:このプロパティ記述子のタイプが変更される可能性があり、プロパティが対応するオブジェクトから削除される可能性がある場合にのみtrue。デフォルトはfalse

だから、私は

x.a = falseこれで、などで遊ぶことができますfor(i in x)。ただし、記述子構成できないはずですが、実行できます。

逆に、それらを再びtrueに設定するか、アクセサー記述子を定義しようとすると、エラーが発生するようになりました。正確には:Object.defineProperty: invalid modification of non-configurable property

記述子が構成不可能であると言われているのに、なぜ記述子を「ダウングレード」できるのですか?

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

javascript - Object.create を使用して作成された JavaScript プロパティの get/set メソッドへのアクセス

私が望むのは、JavaScript プロパティをラップして get/set の動作を変更できる機能です。

値であるプロパティの場合、次のことができます。

しかし、myPropertyが既に getter/setter を持っている場合はどうなるでしょうか?

myProperty匿名セッターを検出して、 notifyOfChange で呼び出せるようにする方法はありますか?

注: notifyOfChange を任意のオブジェクトで機能させたいので、myPropertyセッターに名前付き関数を使用するだけでは機能しません。

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

javascript - javascript defineProperty で属性を列挙不可にする

defineProperty を使用して、属性が for...in サイクルに表示されないようにしようとしていますが、機能しません。このコードは正しいですか?

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

javascript - すべてのブラウザーの Object.defineProperty?

以下に示すように Object.defineProperty について尋ねます。

次のように使用されます。

私がこれまでに見たものに基づいて、運がなかったes5-shimを使用しようとしたため、クロス ブラウザー ソリューションがないように見えますが、確認したいと思います。この投稿への参照も見つけましたが、私のテストは IE 7 & 8 でも失敗します。

数か月前に S/O のどこかで関連する質問を調べたのを覚えています。誰かが回答でこれに対する解決策を書いているのを見たと思います。ゲッター/セッターの一般的な回避策もいただければ幸いです。アイデアは、メソッドを介してパラメーターの変更を渡すことなく、オブジェクトのゲッター セッターに相当するものを必要とするということです。IE6 は必要ありませんが、IE7+ ff 3.6+ などの範囲のブラウザーをサポートしたいと考えています。


以下の QUnit テスト: ( jsFiddles )

(これらは、IE 7 と 8 を除く、私のマシンのすべてのブラウザーで通過します。

defineProperty の直接使用、シムなし:
http://jsfiddle.net/uSYFE/

ES5シムを使用してフィドルします。私がする必要があるのはそれを含めることだけだと思いますか? :
http://jsfiddle.net/hyperthalamus/ntwDy/

IE推奨ソリューションを使用してフィドル
http://jsfiddle.net/hyperthalamus/xfvz3/

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

typescript - TypeScript でプロパティをカスタマイズする方法

TypeScript に次のようなプロパティ定義を発行させるにはどうすればよいですか。

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

javascript - 要素の defineProperty は iOS6 で壊れていますか?

JavaScript の defineProperty と __defineSetter は、iOS6 の要素に対して機能しません。他のすべてのブラウザーおよび以前のバージョンの iOS で適切に動作します。これについて詳しく知っている人はいますか?

フィドルは次のとおりです。

http://jsfiddle.net/ghenne/pnL7p/

0 投票する
2 に答える
6916 参照

javascript - 読み取り専用で構成不可能なプロパティを削除する方法はありますか?

答えは「いいえ」だと思いますが、それは、含まれているオブジェクトへのすべての参照を削除し、ガベージコレクションが最終的に含まれているオブジェクトのすべてのコンテンツを削除できるようにすることです。

ライブの例(コンソールでログ出力を表示する(ChromeでF12キーを押すなど))

コード: