Компиляция множества полезных ответов из (как минимум) Node.js v0.10.33
(стабильный) / v0.11.14
(нестабильный) предположительно через (как минимум) v7.7.4
(версия, текущая на момент последнего обновления этого ответа). Кончик шляпы Рори О'Кейну за помощь.
ТЛ; др
Чтобы получить желаемый результат для примера в вопросе, используйте console.dir()
:
console.dir(myObject, { depth: null }); // `depth: null` ensures unlimited recursion
Почему нет util.inspect()
? Потому что это уже в основе диагностической продукции: console.log()
и console.dir()
, а также Node.js РЕПЛ использовать util.inspect()
неявно . Это вообще не нужноrequire('util')
и звонить util.inspect()
напрямую.
Подробности ниже.
- REPL : неявно печатает возвращаемое значение любого выражения
util.inspect()
с синтаксической раскраской ;
то есть, просто набрав имя переменной и нажав Enter, вы увидите проверенную версию ее значения; например:
o = { one: 1, two: 'deux', foo: function(){} } // The REPL echoes the object definition with syntax coloring.
util.inspect()
автоматически довольно-принты объект и массив представлений , но производит многострочный вывод только при необходимости .
Поведение симпатичной печати может контролироваться compact
свойством в необязательном options
аргументе; безоговорочноfalse
использует многострочный вывод , а вообще отключает симпатичную печать; он также может быть установлен на число (по умолчанию ) для управления условным многострочным поведением - см. документацию .true
3
По умолчанию, вывод выводится около 60 символов , Шрей
, независимо от того, отправляется ли вывод в файл или на терминал. На практике, поскольку разрывы строк происходят только на границах свойств , вы часто будете иметь более короткие строки, но они также могут быть более длинными (например, с длинными значениями свойств).
В v6.3.0 + вы можете использовать breakLength
опцию, чтобы переопределить ограничение в 60 символов; если вы установите его Infinity
, все выводится в одной строке.
Если вы хотите больше контроля над симпатичной печатью, рассмотрите возможность использования JSON.stringify()
с третьим аргументом , но обратите внимание на следующее:
- Сбой с объектами, которые имеют циклические ссылки , например,
module
в глобальном контексте.
- Методы (функции) по замыслу НЕ будут включены.
- Вы не можете выбрать показ скрытых (не перечисляемых) свойств.
- Пример вызова:
JSON.stringify({ one: 1, two: 'deux', three: true}, undefined, 2); // creates a pretty-printed multiline JSON representation indented with 2 spaces
util.inspect()
объект параметров (2-й аргумент):
Может быть передан необязательный объект параметров, который изменяет определенные аспекты форматированной строки; некоторые из поддерживаемых свойств:
См. Последние документы Node.js для текущего, полного списка.
showHidden
- если
true
, то будут показаны также не перечисляемые свойства объекта [те, которые не отображаются при использовании for keys in obj
или Object.keys(obj)
). Значения по умолчанию для false
.
depth
- говорит инспектировать, сколько раз повторять при форматировании объекта. Это полезно для проверки больших сложных объектов. По умолчанию 2. Чтобы сделать его бесконечным, передайте
null
.
colors
- если true, то вывод будет оформлен с помощью цветовых кодов ANSI. Значения по умолчанию для
false
. Цвета настраиваются [… - см. Ссылку].
customInspect
- если
false
, то пользовательские inspect()
функции, определенные для проверяемых объектов, вызываться не будут. Значения по умолчанию для true
.
util.format()
заполнители строки формата (1-й аргумент)
Некоторые из поддерживаемых заполнителей:
См. Последние документы Node.js для текущего, полного списка.
%s
- Струна.
%d
- Число (как целое число, так и число с плавающей запятой).
%j
- JSON.
%%
- один знак процента («%»). Это не потребляет аргумента.