我有这个功能来创建一个对象:
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");
任何想法如何解决这个问题? :)
答案 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");