Создать новый объект внутри цикла - PullRequest
4 голосов
/ 14 сентября 2010

Я хочу создать новый объект и назначить некоторые свойства для каждого массива, хранящегося в некотором json. У меня это в основном работает, кроме ...

for (var i in json) {

            a = 0;
            a++;
            a = new Object();

            for (var key in json[i]) {
                var Key = key;
                var Value = json[i][key];
                a[Key] = Value;
            }
            a.outputProperties();
        }

При выводе свойств объекта все не определено.

Если я создаю отдельный объект вне цикла и присваиваю ему свойства, он, кажется, работает нормально, за исключением того, что первый набор свойств перезаписывается следующим. Не знаю, почему я не смогу динамически создавать объекты и назначать свойства внутри цикла.

Ответы [ 4 ]

3 голосов
/ 14 сентября 2010

Вы никогда не устанавливаете никаких свойств a.Вы просто устанавливаете свойства sup2.На заметке у вас есть другие ненужные вещи, такие как var Key = key; Попробуйте:

1 голос
/ 15 сентября 2010

Ответ Дэйва Смита был довольно близок к тому, что мне было нужно, но он не создавал новые объекты в цикле. Вот мой обновленный код, который дал желаемый результат:

for (var i in json) {
            theGoods["obj"+i] = new Object();
            for (var key in json[i]) {
                theGoods["obj"+i][key] = json[i][key];
            }
            theGoods["obj"+i].outputProperties();
        }

Каждый новый объект теперь хранится в массиве theGoods []; Теперь я могу ссылаться на этот объект, написав что-то вроде: theGoods["obj2"].someMethod();

1 голос
/ 14 сентября 2010

Код, который вы вставили, мне не подходит, в этом смысле кажется, что он не слипается.

Что делают эти три строки:

     a = 0;
     a++;
     a = new supplement();

Вы, кажется, делаете три противоречивые вещи с там.Я предполагаю, что a должен быть указателем на какую-то внешнюю вещь, которую вы не показываете.

Тогда что такое

     sup2

, какое-то отношение к дополнению ()сделано раньше?

0 голосов
/ 14 сентября 2010
for (var i in json) {

        a = new supplement();

        for (var key in json[i]) {
            var Value = json[i][key];
            a[Key] = Value;
        }
        a.outputProperties();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...