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

javascript - JS defineProperty とプロトタイプ

ご存じのように、JS では を使用してゲッターとセッターを定義できますdefineProperty()。を使用してクラスを拡張しようとすると、行き詰まりましたdefineProperty()

コード例を次に示します。

オブジェクトに追加する必要があるフィールドの配列があります

また、変更されるクラスがあります

そして、使用してクラスにフィールドを追加する関数defineProperty()

実行した後define_fields()、私は自分のフィールドをのインスタンスに持っていますUser

しかし、これらのプロパティの値は同じです

defineProperty()この場合、適切に動作させる方法はありますか? 問題がvalueクラスの各インスタンスで同一になることを理解していれば、それを修正する方法を理解できません。ご回答ありがとうございます。

UPD: この方法では、「RangeError: 最大コール スタック サイズを超えました」がスローされます

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

angularjs - Breeze と Angular の「ToDo」アプリが IE 8 で動作しない

サンプルの「Breeze 0.83.5」アプリケーションをhttp://www.breezejs.com/documentation/downloadからダウンロードしました。

Angular の「ToDo」サンプルは IE8 では機能しません。

Breeze スクリプト リファレンスの上に、次のスクリプト リファレンスを含めました。

なぜこれがうまくいかないのですか?

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

javascript - JavaScript:列挙不可能なプロパティに値を割り当てると、列挙可能に変更されますか?

ここで何かを誤解していると思います。列挙不可にしたいプロパティを含むオブジェクトがあります。オブジェクトの関数自体から値を代入できるようにしたいのですが、そうすると、プロパティが列挙可能になります。

例:

実際には、node.parent に値を割り当てると、parent と呼ばれる新しい「独自の」プロパティが作成され、元のプロパティがオーバーライドされます。

これを行わずに、列挙不可能なプロパティに値を内部的に割り当てる方法はありますか? または、クロージャー内の変数を参照する getter/setter プロパティに頼る必要がありますか?

編集:

GGGがこれに答えたことは称賛に値します。彼のアドバイスが私の究極の答えにつながったからです。

私がやりたかったことは、基本的に「for(key in object)」ステートメントから単純なプロパティを隠すことでした。私はこれを次のように行うことができました:

私が最初からこれに躊躇した理由の 1 つは、各インスタンスでプロパティを再作成したくないという誤った理解でした。しかし、まあ、それがインスタンスプロパティです!!!

GGG、脳の再調整を手伝ってくれてありがとう!

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

javascript - 使用する前にアクセスすると、Object.defineProperty で定義されたプロパティの動作が変わるのはなぜですか?

これを Chrome でのみテストしました。私のアプリケーションは他のブラウザで動作する必要はありません。

たとえば、次のコード ( JSFiddle ) では:

出力は次のとおりです。

それ以外の:

一方、次のコード ( JSFiddle ) では:

出力は次のとおりです。

ここで何が起こっているのですか?

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

javascript - Object.defineProperty を使用して、プロトタイプ内でインスタンス固有のプロパティを作成しますか?

すべてのインスタンスで使用できるように、プロトタイプ内にプロパティを作成しようとしています (コンストラクターに配置することはできず、可能であれば、instance.propertyname = *; を介して作成しないことをお勧めします。例として以下のコード:

出力を生成します。

代わりに生成するにはどうすればよいですか:

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

javascript - もっと簡単にできる場合、Object.defineProperty の使用は何ですか?

Object.defineProperty の用途は何ですか...

...私もできるなら...

ここでjsfiddle

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

javascript - setter のデフォルト オブジェクトを拡張する

ご存知のように、ボタンはボタンです...クリック、アップ、ダウン、これを行い、あれを行います。そこで、デフォルトのボタン動作「クラス/オブジェクト」をいくつか書きました。

外部デフォルト button.js:

html に button.js を含め、ボタンの「クラス/オブジェクト」を拡張します。

これはほとんど機能しますが、初期化された元の Button を強制終了します。

元のセッターを拡張するにはどうすればよいですか?

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

javascript - Html5 のゲッターとセッターを使用して公開モジュール パターンでプロパティを実装するために必要な説明

Javascriptでプロパティを実行する方法をたくさん検索しました。私が見たほとんどすべての公開モジュールパターンは、もっぱら公開された関数を持っています.経験から、私がオブジェクトを公開した場合、私は実際にその場で値のコピーを取得しているだけであるため、単純に関数を持つことができます. getMyThing() と setMyThing を公開します。ただし、実際のプロパティを公開したい

私が避けている古い学校のdefineGetterと、いくつかの本当の問題を抱えていた新しい Object.defineProperty( を見てきました。私が明らかにしたかったモジュール。

とにかく、いくつかの場所で get および set キーワードを使用できることがわかります。次の例は、少なくとも firefox と ie10 で機能しています。

私の質問: これは受け入れられるアプローチですか、それとも私が気付いていない隠れた落とし穴がありますか。最新のブラウザーで最も受け入れられるのは、このアプローチですか? この機能は何と呼ばれていますか? Object.defineProperty 機能の正式名称は何ですか? get および set キーワードの使用は ECMAScript5 の getter および setter であると推測していますが、もう一方は何と呼ばれていますか?

get および set キーワードは、この互換性チャートhttp://kangax.github.io/es5-compat-table/の「プロパティ初期化子のゲッター」および「プロパティ初期化子のセッター」のカテゴリで言及されているキーワードですか?

JSfiddle の例 - http://jsfiddle.net/klumsy/NagbE/1/

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

javascript - プロパティの set/get 関数を見つける方法 (Object.defineProperty)

プロパティが次のように定義されているとします。

私がやりたいことは、window.prop を再定義することです。たとえば、次のようになります。

window.prop.set/get は機能しませんが、このようなことは可能ですか?