Консоль Chrome не отображает полный объект для console.log(obj);
, а только { a: {...} }
- и когда вы нажимаете «треугольник», чтобы отобразить содержимое объекта, консоль Chrome использует фактическое значение объекта.
Отрезанный StackOverflow отображает полное содержимое объекта сразу на каждой итерации - но Chrome только сохраняет ссылку на объект и смотрит на него глубже, только когда пользователь нажимает на «треугольник» в консоли.
Вы должны сделать вложенным(глубокое) копирование (популярным способом является, например, JSON.parse(JSON.stringify(obj))
, но вы можете найти лучших способов для StackOverflow ) объекта на текущей итерации цикла и передать эту глубокую копию console.log (copyObj);,Например:
var obj = {
a: {
b: 0
}
}
for (i = 0; i < 10; i++) {
obj.a.b += 5;
console.log('log obj.a.b = ' + obj.a.b);
console.log( JSON.parse(JSON.stringify(obj)) );
}
После обновления вопроса
arr.push(obj)
выдвигать в массиве только ссылку на тот же объект obj
, используйте приведенный ниже код для добавления отдельной копии obj
(точнее ссылка на копию) как новый элемент массива:
arr.push( JSON.parse(JSON.stringify(obj)) )