2012-07-22 54 views
0

我創建了幾個對象.. p0,p1,p2,... p。其中max'n'是已知的。 p?對象具有自定義的方法(例如,startp())。JavaScript - 將預先創建的對象(o1,o2,o3 ..)存儲在一個數組中

我想將它們推入一個數組(我們稱之爲'A')。這樣,給定一些索引我,我想調用一些方法,如:A [i] .startp()。我的javascript代碼:

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

我得到類似「ReferenceError:p0未定義」的錯誤。

謝謝。

+9

修復代碼,使它們首先在數組中創建,而不是在具有相似名稱的一堆變量中創建。 – Quentin 2012-07-22 18:13:00

+2

請將代碼發佈到創建這些對象的位置。並且不要在99%的情況下使用'eval()'...有更好的解決方案。 – kapa 2012-07-22 18:15:26

回答

2

相反的:

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

等,只是這樣做:

var A = [ 
    { x: "foo" }, 
    { x: "bar" } 
]; 
1

個人標識只是去與尖給出了答案,但根據其中p?聲明(想人們稱之爲範圍),你可以做這樣的事情,以避免EVAL ....

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

...什麼工作代替窗口;)...很難給你一個確切的答案,而不看到更多的代碼。

+0

問題是這些p?在創建A []數組的模塊之前導入的某些模塊中,對象是以任意順序隨機創建的。對象創建順序可能類似於:p1,p3,p0,p2 ..。我不能只要這些p就將它們推入一些數組中?創造自己,因爲我希望他們能夠以正確的順序進行創作(即使假設A []在創建p?對象之前就已存在)。 – 2012-07-23 08:34:13

+0

我試過窗口['p'+ i]解決方案。它沒有工作。 – 2012-07-23 08:35:01

相關問題