Збірка безлічі корисних відповідей з (принаймні) 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()
так само, як REPL 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()
3-го аргументу , але зверніть увагу на таке:
- Помилка з об'єктами, які мають кругові посилання , наприклад,
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
- якщо вірно, то вихід буде стилізований з кольорами ANSI кольорів. За замовчуванням до
false
. Кольори налаштовуються [… - див. Посилання].
customInspect
- якщо
false
тоді спеціальні inspect()
функції, визначені на об'єктах, що перевіряються, не будуть викликатися. За замовчуванням до true
.
util.format()
заповнювачі формату-рядка (1-й аргумент)
Деякі із підтримуваних заповнювачів:
Дивіться останні документи Node.js для поточного повного списку.
%s
- Рядок.
%d
- Число (і ціле, і плаваюче).
%j
- JSON.
%%
- знак одиничного відсотка ('%'). Це не вимагає аргументів.