2

これは言い回しの悪い質問かもしれませんが、このスニペットを考慮してください:

var foo = { bar : 1 };
var bar = foo['bar'];

fooにインデックスを付けるときに実際に呼び出される関数は何ですか?同様に、次のコードがある場合はどうなりますか。

var foo = { bar : 1 };
for(var x in foo)
   dosomething();

forステートメントで実際に呼び出されるfooの関数は何ですか?特定のオブジェクトについて、これらの両方のシナリオの動作を変更したいとします。どうすればよいでしょうか。

具体的には、.netオブジェクトをMSHTMLドキュメントに渡すことです(上記のfooは実際にはオブジェクトです)。オブジェクトはIReflectを実装し、インデックス呼び出し(上記のシナリオ1など)中にGetPropertiesとGetFieldsが作成されます。それを実装してオブジェクトを呼び出せるように、探しているプロパティを知る必要があります。

4

2 に答える 2

1

PHPのように魔法のゲッターやセッターを探しているように聞こえます。ジョン・レシグはそれについての記事を書きました。ただし、すべてのプラットフォームで機能するわけではありません。

于 2011-01-02T17:04:31.487 に答える
0

答えは、最初の部分で、コレクション内のアイテムのインデックスにちなんで名付けられた独自のPropertyInfoオブジェクトを作成し、それらを返すことです。ただし、for..inとの互換性についてはまだわかりません。

于 2011-01-09T16:45:47.023 に答える