Kompilasi dari banyak jawaban yang berguna dari (setidaknya) Node.js v0.10.33(stable) / v0.11.14(tidak stabil) mungkin melalui (setidaknya) v7.7.4(versi saat ini pada pembaruan terbaru untuk jawaban ini). Ujung topi untuk Rory O'Kane atas bantuannya.
tl; dr
Untuk mendapatkan hasil yang diinginkan untuk contoh dalam pertanyaan, gunakan console.dir():
console.dir(myObject, { depth: null }); // `depth: null` ensures unlimited recursion
Mengapa tidak util.inspect()? Karena sudah di jantung keluaran diagnostik: console.log()dan console.dir()juga REPL Node.js digunakan util.inspect() secara implisit . Biasanya tidak perlurequire('util') dan menelepon util.inspect()langsung.
Detail di bawah.
- REPL : secara implisit mencetak nilai pengembalian ekspresi
util.inspect() dengan pewarnaan sintaks ;
yaitu, hanya mengetik nama variabel dan menekan Enter akan mencetak versi yang diperiksa nilainya; misalnya:
o = { one: 1, two: 'deux', foo: function(){} } // The REPL echoes the object definition with syntax coloring.
util.inspect()secara otomatis mencetak objek dan representasi array , tetapi menghasilkan output multiline hanya jika diperlukan .
Perilaku pencetakan cantik dapat dikontrol oleh compactproperti dalam optionsargumen opsional ; falsemenggunakan multi-line output tanpa syarat , sedangkan truemenonaktifkan pencetakan-cantik sama sekali; itu juga dapat diatur ke angka (standarnya adalah 3) untuk mengontrol perilaku multi-line bersyarat - lihat dokumen .
Secara default, output dibungkus sekitar 60 karakter terima kasih, Shrey
, terlepas dari apakah output dikirim ke file atau terminal. Dalam praktiknya, karena jeda baris hanya terjadi pada batas properti , Anda akan sering berakhir dengan garis yang lebih pendek, tetapi garis tersebut juga bisa lebih panjang (misalnya, dengan nilai properti yang panjang).
Di v6.3.0 + Anda dapat menggunakan breakLengthopsi untuk mengganti batas 60 karakter; jika Anda mengaturnya Infinity, semuanya adalah output pada satu baris.
Jika Anda ingin lebih mengontrol pencetakan cantik, pertimbangkan untuk menggunakan JSON.stringify()argumen ke-3 , tetapi perhatikan hal berikut:
- Gagal dengan objek yang memiliki referensi melingkar , seperti
moduledalam konteks global.
- Metode (fungsi) dengan desain TIDAK akan dimasukkan.
- Anda tidak dapat ikut serta dalam memperlihatkan properti yang tersembunyi (tidak dapat dihitung).
- Contoh panggilan:
JSON.stringify({ one: 1, two: 'deux', three: true}, undefined, 2); // creates a pretty-printed multiline JSON representation indented with 2 spaces
util.inspect()objek pilihan (argumen 2):
Objek opsi opsional dapat diberikan yang mengubah aspek tertentu dari string yang diformat; beberapa properti yang didukung adalah:
Lihat dokumen Node.js terbaru untuk daftar lengkap saat ini.
showHidden
- jika
true, maka properti non-enumerable objek [yang ditunjuk untuk tidak muncul ketika Anda menggunakan for keys in objatau Object.keys(obj)] akan ditampilkan juga. Default ke false.
depth
- memberitahu memeriksa berapa kali untuk berulang saat memformat objek. Ini berguna untuk memeriksa benda rumit yang besar. Default ke 2. Untuk membuatnya berulang tanpa batas, lewati
null.
colors
- jika benar, maka output akan ditata dengan kode warna ANSI. Default ke
false. Warna dapat disesuaikan [... - lihat tautan].
customInspect
- jika
false, maka inspect()fungsi khusus yang didefinisikan pada objek yang sedang diperiksa tidak akan dipanggil. Default ke true.
util.format()penampung format-string (argumen 1)
Beberapa placeholder yang didukung adalah:
Lihat dokumen Node.js terbaru untuk daftar lengkap saat ini.
%s - Tali.
%d - Nomor (bilangan bulat dan mengambang).
%j - JSON.
%%- tanda persen tunggal ('%'). Ini tidak menggunakan argumen.