0

私はいくつかのオブジェクトを作成しました.. p0、p1、p2、... p。ここで、最大 'n' は既知です。ピー?オブジェクトにはカスタマイズされたメソッドがあります (例: startp() )。

それらを配列にプッシュしたいと思います(「A」と呼びましょう)。そのようにして、いくつかのインデックス i を指定して、A[i].startp() のようなメソッドを呼び出したいと思います。私のJavaScriptコード:

A = [];
for (var i=0; i<=n; i++){
    A.push( eval('p'+i) );
}

「ReferenceError: p0 が定義されていません」のようなエラーが発生します。

ありがとう。

4

2 に答える 2

2

それ以外の:

var p0 = { x: "foo" };
var p1 = { x: "bar" };

など、これを行うだけです:

var A = [
  { x: "foo" },
  { x: "bar" }
];
于 2012-07-22T18:16:00.750 に答える
1

個人的には、Pointy の回答に同意するだけですが、どこに p があるかによって異なります。宣言されています(彼らがそのスコープを呼び出すと思います)evalを避けるためにこのようなことをすることができます....

var A = [];
for (var i=0; i<=n; i++){
    A.push(window['p'+i]);
}

...ウィンドウを機能するものに置き換えます;)...さらにコードを見ずに正確な答えを出すのは難しいです。

于 2012-07-22T19:25:11.497 に答える