Показать сообщение отдельно
  #2 (permalink)  
Старый 12.09.2014, 00:13
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,565

Объекты в js передаются по ссылке, консоль тоже работает с объектами по ссылке. Соответственно когда вы просматриваете содержимое объекта(стрелочкой) - вы смотрите его текущее содержимое, а в консоли отображается значение на момент вызова console.log(и то только в chrome, ff динамически меняет вывод на актуальный).
Пример:
function Moment(){}
var obj={
  checkIn: new Moment, 
  checkOut:new Moment
}
console.log(obj);
obj.checkIn = obj.checkOut = null


Сообщение от Aetae Посмотреть сообщение
Лично мне не слишком нравится такой подход в реализации console.log - удобнее и логичнее было бы при выводе делать полные копии переданных объектов на момент передачи. Наверное такой поход приводил к излишним расходам памяти или просто противоречил стилю js. Так или иначе теперь уже ничего не попишешь, просто надо учитывать, что в консоли мы увидим самое последнее состояние объекта, а не промежуточное.
__________________
29375, 35
Ответить с цитированием