2

数値をインデックスとして受け取るカスタム オブジェクトを作成したいのですArrayが、インデックスの値に応じて、計算された値を返します。

例えば:

>>> var MyArray(2);
>>> MyArray[2];
4
>>> MyArray.2;
4

示されている例では、関数の方が優れていることはわかっていますが、概念的な配列であるが計算が必要になる可能性のあるもののプロパティ/インデックスルックアップをオーバーライドできるかどうかを知りたいです。

私はそれを知っているx.1 == x[1]ので、必要なのはJavaScriptでプロパティを作成することです。

つまり、 を作るx.variable = x.myPropery()ので、 の値を取得するx.variableたびに の戻り値を受け取りますx.myPorperty()

これは可能ですか?

4

2 に答える 2

2

variable[property] はドット表記と同じなので、評価されるメソッドではなく、変数である MyArray.2 を実行しています。割り当てられたときにプロパティを変更するメソッド、またはそれを引き出したときに正しい値を計算するメソッドなしでは、本当にやりたいことを行うことはできません。

いいえ、[] をオーバーライドすることはできません。これは単純なドット表記であり、実際にはオーバーライドできるインデックスではありません。

Re: あなたのコメント, 絶対にできます.

var x = new Array();
x[1] = function () { alert('x') };

var myFunction = x[1];

x[1]();        // alerts "x"
myFunction();  // alerts "x"

alert(x[1]);         // alerts "function () { alert('x') };"
alert(myFunction);   // alerts "function () { alert('x') };"
于 2009-08-05T17:35:27.810 に答える
1

現在、Javascript の Getter と Setter は

  • ファイアフォックス
  • サファリ 3+
  • オペラ 9.5+

Internet Explorer (どのバージョンでも) には、この点が欠けています。

于 2009-08-19T20:45:59.773 に答える