0

我创建了几个对象.. p0,p1,p2,... p。其中最大'n'是已知的。p? 对象中有自定义的方法(例如 startp() )。

我想将它们推入一个数组(我们称之为'A')。这样,给定一些索引 i,我想调用一些方法,例如:A[i].startp()。我的 JavaScript 代码:

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

我收到诸如“ReferenceError: p0 is not defined”之类的错误。

谢谢。

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]);
}

...用有效的方法替换 window ;)...很难在没有看到更多代码的情况下给你一个准确的答案。

于 2012-07-22T19:25:11.497 回答