Сделать так, чтобы console.log работал синхронно в Google Chrome - PullRequest
0 голосов
/ 08 мая 2018

В Google Chrome следующий фрагмент

var array = [{a: 0}];
console.log(array);
array[0].a = 1;

выводит [{a: 1}] (Не при использовании фрагмента Stackoverflow, но проверьте его на JsFiddle )

Я подозреваю, что это потому, что console.log асинхронно реализован в Chrome, а массив хранится по ссылке. Я заметил, что console.table() прекрасно работает таким образом.

Есть ли способ заставить console.log() сделать то же самое?

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Вы хотите зарегистрировать копию объекта, это особенно полезно, когда вы не можете контролировать, когда будет нажиматься стрелка в консоли.

Если объект содержит дружественные JSON типы, console.log(JSON.parse(JSON.stringify(a)) будет работать.

Как сделать Deep clone в javascript поможет с более сложными объектами.

0 голосов
/ 08 мая 2018

Журнал консоли содержит ссылку на объект, он не клонирует его только для печати на консоли.Это было бы смешно.Если вы хотите запомнить состояние, вам нужно либо JSON.stringify объект, либо выполнить глубокое клонирование его вручную.

Редактировать : синхронно.Пользовательский интерфейс перерисовывается при обновлении представления.Я имею в виду, например, если вы нажмете на треугольник.

enter image description here

...