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 compact
properti dalam options
argumen opsional ; false
menggunakan multi-line output tanpa syarat , sedangkan true
menonaktifkan 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 breakLength
opsi 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
module
dalam 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 obj
atau 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.