Установка значений в объектах JS
Я пытаюсь изменить значение в объекте для последующего использования. Почему значения не сохраняются с помощью этого метода?
У меня есть следующий код:
window.myobj = { a: {_a: '_a here', _b: '_b here', _c: ''}, b: {_a: '_a here', _b: '_b here', _c: ''}, c: {_a: '_a here', _b: '_b here', _c: ''} //etc. } myobj['a']._c = 'test'; alert(myobj['a']._c); // not test!Это прекрасно работает для предопределенных значений, но не для динамически заданных.
РЕДАКТИРОВАТЬ:
Я сузил его до проблемы цикла - ключ всегда последний в массиве.
window.keys = Object.keys(servers); for(var i = 0; i < keys.length; i++) { var key = keys[i]; var xhr = new XMLHttpRequest(); xhr.addEventListener('load', function() { alert(key); // this is the issue due to this happening after the loop is finished myobj[key]._c = this.responseText; }); xhr.open('GET', 'test.php?s=' + myobj[key]._b); xhr.send(); }
Что я уже пробовал:
Устанавливая значение непосредственно, используя ['_c'] и устанавливая myobj['a'] полностью на новый объект.
Thomas Daniels
Я попытался запустить это, и это предупредительный "тест", как и ожидалось и желалось.
User 13204940
Я отредактировал вопрос