В Safari без надстроек (и на самом деле в большинстве других браузеров) console.log
объект будет отображаться в последнем состоянии выполнения, а не в том состоянии, когда он console.log
был вызван.
Я должен клонировать объект, просто чтобы вывести его через, console.log
чтобы получить состояние объекта в этой строке.
Пример:
var test = {a: true}
console.log(test); // {a: false}
test.a = false;
console.log(test); // {a: false}
Ответы:
Я думаю, что вы ищете
console.dir()
.console.log()
не делает то, что вы хотите, потому что он печатает ссылку на объект, и когда вы открываете его, он меняется.console.dir
печатает каталог свойств объекта во время его вызова.Идея JSON ниже хороша; Вы можете даже проанализировать строку JSON и получить объект для просмотра, например, что даст вам .dir ():
console.log(JSON.parse(JSON.stringify(obj)));
источник
console.log
аconsole.dir
console.dir
не работает в Chrome (v33). Вот сравнение решений, которые предложили люди: jsfiddle.net/luken/M6295Что я обычно делаю, если я хочу видеть его состояние во время регистрации, я просто конвертирую его в строку JSON.
источник
function odump(o){ console.log($.parseJSON(JSON.stringify(o))); }
Ваниль JS:
@ Эван ответ здесь кажется лучшим. Просто (ab) используйте JSON.parse / stringify, чтобы эффективно сделать копию объекта.
JQuery конкретное решение:
Вы можете создать снимок объекта в определенный момент времени с помощью
jQuery.extend
Здесь на самом деле происходит то, что jQuery создает новый объект с
test
содержимым объекта и регистрирует его (так что он не изменится).AngularJS (1) конкретное решение:
Angular предоставляет
copy
функцию, которую можно использовать для того же эффекта:angular.copy
Функция обертки Vanilla JS:
Вот функция, которая оборачивает,
console.log
но сделает копию любых объектов перед выходом их из системы.Я написал это в ответ на несколько похожих, но менее надежных функций в ответах. Он поддерживает несколько аргументов и не будет пытаться копировать вещи, если они не являются обычными объектами.
пример использования :
consoleLogWithObjectCopy('obj', {foo: 'bar'}, 1, /abc/, {a: 1})
источник
Это
> Object
в консоли, не только показывает текущее состояние. Это фактически задерживает чтение объекта и его свойств до тех пор, пока вы его не развернете.Например,
Затем разверните первый вызов, это будет правильно, если вы сделаете это до второго
console.log
возвратаисточник
используя подсказку Xeon06, вы можете проанализировать его JSON в объекте, и вот функция журнала, которую я сейчас использую для вывода своих объектов:
источник
Я определил утилиту:
и когда я хочу войти в консоль, я просто делаю:
Это работает очень хорошо!
источник
Возможно, вы захотите записать объект в удобочитаемом виде:
Это делает отступ для объекта с 2 пробелами на каждом уровне.
Как мне красиво распечатать JSON с помощью JavaScript?
источник
Существует возможность использовать библиотеку отладчика.
https://debugjs.net/
Просто включите сценарий на свою веб-страницу и поместите в журнал заявления.
логирование
источник
Я могу быть застрелен за то, что предложил это, но это может быть сделано еще на один шаг вперед. Мы можем напрямую расширить консольный объект, чтобы сделать его более понятным.
Я не знаю, вызовет ли это какой-то тип столкновения библиотеки / ядерного распада / разрыва в континууме пространства-времени. Но это прекрасно работает в моих тестах qUnit. :)
источник
Просто обновите страницу после открытия консоли или открытия консоли перед отправкой запроса на целевую страницу ....
источник
Просто напечатайте весь объект на консоли.
источник