Збірка безлічі корисних відповідей з (принаймні) 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.
%%- знак одиничного відсотка ('%'). Це не вимагає аргументів.