Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ерунда с типами. (https://javascript.ru/forum/misc/50101-erunda-s-tipami.html)

Syabrowka 11.09.2014 23:30

Ерунда с типами.
 
Даже не знаю, как и описать…
Есть объект. Его элементам скрипт в какой-то момент задаёт даты (объект moment из библиотеки moment.js), но в какой-то момент задаёт null.
В процессе отладки глюков вывожу в консоль этот объект и вижу такое чудо:

То есть, объект содержит два поля со значением null, но каждое из них при этом — объект moment??
Что это может быть?

Aetae 12.09.2014 00:13

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


Цитата:

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


Syabrowka 12.09.2014 00:27

Спасибо! О таком я и не знала, и не подумала даже.
Но действительно, ошибка в программе крылась как раз в том, что эти значения позже лишний раз переназначались.


Часовой пояс GMT +3, время: 08:13.