2012-10-10 122 views
11

可能重複:
javascript - dynamic variables
Dynamic Javascript variable names我可以在JavaScript中創建動態對象名稱嗎?

我需要創建一些頁面上的對象,並希望按順序命名。有沒有辦法在JavaScript中做到這一點?

for (i=0;i<num;i++){ 
    var obj+i = new myObject("param1","param2"); 
    obj+i.someProperty = value; 
} 

這樣我可以動態地創建不同數量的對象(依賴於值「NUM」),然後適當地設定它們的屬性。

我可以在PHP中做到這一點,有沒有辦法在JavaScript中做到這一點?

+0

謝謝你的幫助!我抵制了創建一組對象的整個想法,但之前沒有這樣做。我問這個問題,認爲這會幫助我開始一個對話框來找出答案。再次收到數組答案後,我試了一下,結果奏效了!對不起,相信這麼慢。 –

回答

1

您可以創建,您可以設置/修改該對象的屬性。

修改後的代碼:

var obj = {}; // 
for (i=0;i<num;i++){ 
    obj[i] = new myObject("param1","param2"); 
    obj[i].someProperty = value; 
} 

我建議你使用數組。作爲

var obj = []; // 
    for (i=0;i<num;i++){ 
     obj[i] = new myObject("param1","param2"); 
     obj[i].someProperty = value; 
    } 
+0

我知道這是舊的,但這並沒有創建一個動態的對象名稱。 – Craicerjack

6

這就是數組是,持有的東西的集合:

var objs = []; 
for (i=0;i<num;i++){ 
    objs[i] = new myObject("param1","param2"); 
    objs[i].someProperty = value; 
} 

動態變量幾乎總是一個壞主意。

12

這不是建議的,但要做你正在做的事情(如果你在瀏覽器中而不是在其他js環境中運行)。

for (i = 0; i < num; i++) { 
    window['obj' + i] = new myObject("param1","param2"); 
    window['obj' + i].someProperty = value; 
} 
obj0.someProperty; 

這是有效的,因爲全局變量實際上是窗口對象的屬性(如果您在瀏覽器中運行)。您可以使用點表示法(myObject.prop)或括號表示法(myObject ['prop'])訪問對象的屬性。通過分配window ['obj'+ i],你正在創建一個名爲'obj'+ i的全局變量。

更好的選擇是使用數組或父對象來存儲對象。

myObjs = {}; 
for (i = 0; i < num; i++) { 
    myObjs['obj' + i] = new myObject("param1","param2"); 
    myObjs['obj' + i].someProperty = value; 
} 
myObjs.obj0.someProperty; 

或者使用像很多其他答案建議的數組。

+0

我同意,上面的代碼工作。但不要這樣做! – Webbies

+0

我認爲重要的是要指出,這些變量將是全球性的。 –

相關問題