2009-08-05 9 views
2

数値をインデックスとして受け取るカスタムオブジェクトを作成し、インデックスの値に応じて計算された値を返します。例えばjavascriptでプロパティを作ることはできますか?

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

私が示した、たとえば、私は機能とのより良いんだけど、私は私がしているいくつかのプロパティ/インデックス検索を無効にできるかどうかを知りたいことを知っています概念的な配列ですが、計算が必要な場合があります。

私はx.1 == x[1]を知っています。だから、私が必要とするのはjavascriptでプロパティを作ることです。

私が意味するところは、x.variableの値を得るたびにx.myPorperty()の返品を受け取ります。

これも可能ですか?

答えて

2

変数[プロパティ]はドット表記と同じですので、評価するメソッドではなく、変数MyArray.2を実行しています。割り当てられたときにプロパティを変更するメソッドや、取り出したときに適切な値を計算するメソッドがなければ、実際にはできないことがあります。

そして、いや、あなたは[]、その単純にドット表記、あなたが

再上書きすることができ、そのことは本当にインデックスオーバーライドすることはできません:あなたのコメントを、絶対に、あなたは現在、

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') };" 
+0

私は 'x [1] == x.1'を認識しています。 'x.i == x.myProperty()'を作る方法はありますか? – voyager

+0

私はポストでは、関数を宣言して渡すことができ、呼び出して結果を得ることができることを覚えていますが、関数を呼び出すことはできません。 –

+0

私は自分自身を正しく説明していないと思います。私は、関数は、asignedことができることを知っているが、Javaのゲッターやセッターの代わりに、Pythonの、.NETのようなプロパティができますか? – voyager

関連する問題