每次调用函数时都有新对象

时间:2015-11-03 14:00:29

标签: javascript jquery object

我有这个功能来创建一个对象:

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

因此,每次调用它时,都会创建一个新对象。

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

但是我有另一个可以多次调用的函数。

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

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

我想在每次调用build()时创建一个新对象,并为其命名为“id”+ [增加数量],例如。 id1,id2,...,id10。 所以每次调用函数时,都会创建一个对象。我每次使用它时都尝试将数字增加1,但我无法弄清楚如何将其写入。老实说,这有点愚蠢:

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

任何想法如何解决这个问题? :)

2 个答案:

答案 0 :(得分:5)

你能把对象保存在数组中吗?这样,“密钥”自动排序成为增加ID。

所以你早些时候:

var objects = [];

然后在构建函数中你喜欢

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

然后在对象变量中,您将拥有您创建的所有对象。可由对象[0],对象[1]等访问

答案 1 :(得分: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");