2015-11-03 50 views
0

我有這個功能來創建一個對象:新的對象,每次我打電話功能

function Building(owner, type, hp) { 
this.owner = owner; 
this.type = type; 
this.hp = hp; 
} 

所以,每次我把它時,都會創建一個新的對象。

var barracks = new Building(player,bBarracks,"100"); 

但我有另一個可以多次調用的函數。我想在每次調用build()時創建一個新對象,並給它一個名稱爲「id」+ [增加的數字],例如。 id1,id2,...,id10。因此,每次我調用函數時,都會創建一個對象。我試圖通過1每次使用時間的增加了一些,但我無法弄清楚如何把它寫在說實話,那是有點啞。

objID++; 
var id+(objID) = new Building(player,bPowPlant,"100"); 

任何想法如何算出這個? :)

+6

怎麼樣'VAR建築= {}; ...建築[id + objID] =新樓(...); ' –

+3

你需要這個ID爲什麼?因爲一個簡單的數組似乎足夠了 – Yoshi

回答

5

你可以保持在一個數組中的對象?這樣的「關鍵」自動排序成爲增量ID。

所以你必須早前:

在構建功能var objects = [];

然後你去做

objects.push(new Building(player,bPowPlant,"100"))

然後在對象的變量,你將有你有對象創建。可以通過對象[0],對象[1]等訪問。

+0

它工作。你保存了我的項目,現在我明白了陣列!謝謝! – Kajcioch

1

當您想要將字符串保存爲變量名時,您需要將其保存爲對象鍵。您可以構建自己的對象,但常用的方法是使用window[variableName]保存到窗口對象。至於id號碼,您可以將其保存到更高範圍的變量,然後在build()函數內增加。

var objId = 0; 

function build() { 
    if (building == 1) { 

    $("."+xPos+"-"+yPos).addClass("building-powerplant").addClass("taken"); 
    hudBuildings("powerPlant"); initialize(); 
    hudBuildings("barracks"); 

    objId++; 
    ... 
} ... } 

然後,當你創建一個新的對象:

window["id"+objId] = new Building(player,bPowPlant,"100"); 
相關問題