У меня есть массив объектов, в котором мне нужно назначить уникальный идентификатор. Для того, чтобы сделать его простым, я объявил глобальный вар для этого идентификатора, что я обновляю на каждом новом объекте:Назначить значение глобальной переменной объекту
var id_unit = 0,
units = [],
merc = [
{name: 'grunt', id: 0, level: 1, hp: 1, atk: 1, def: 1, deployed: false},
{name: 'big grunt', id: 0, level: 1, hp: 1, atk: 1, def: 1, deployed: false}
];
function buy_unit(type, callback) {
var unit = merc[type];
unit.id = id_unit;//0 + id_unit //new Number(id_unit) //Number(id_unit)
id_unit = id_unit + 1;
units.push(unit);
callback('OK');
}
проблема, когда я использую эту функцию, идентификатор, похоже, получил адрес в unit_id вместо его значение:
buy_unit
unit_id: 0
i: 0 id: 0 level: 1 deployed: false
buy_unit
unit_id: 1
i: 0 id: 1 level: 1 deployed: false
i: 1 id: 1 level: 1 deployed: false
Когда то, что я ожидал был:
buy_unit
unit_id: 1
i: 0 id: 0 level: 1 deployed: false
i: 1 id: 1 level: 1 deployed: false
Почему unit_id возвращение его указатель, а не его значение? Как я могу получить стоимость?
реальный код внутри цикла, так что 'id_unit' настоящее время захвачены в затворе? См. Http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example – RichieHindle