Di Safari tanpa add-on (dan sebenarnya sebagian besar peramban lainnya), console.log
akan menampilkan objek pada status eksekusi terakhir, bukan pada status saat console.log
dipanggil.
Saya harus mengkloning objek hanya untuk output melalui console.log
untuk mendapatkan keadaan objek pada baris itu.
Contoh:
var test = {a: true}
console.log(test); // {a: false}
test.a = false;
console.log(test); // {a: false}
Jawaban:
Saya pikir Anda sedang mencari
console.dir()
.console.log()
tidak melakukan apa yang Anda inginkan karena ia mencetak referensi ke objek, dan saat Anda membukanya, itu berubah.console.dir
mencetak direktori properti di objek pada saat Anda memanggilnya.Gagasan JSON di bawah ini adalah ide yang bagus; Anda bahkan bisa melanjutkan untuk mengurai string JSON dan mendapatkan objek yang dapat dijelajahi seperti apa yang akan diberikan oleh .dir ():
console.log(JSON.parse(JSON.stringify(obj)));
sumber
console.log
danconsole.dir
console.dir
tidak bekerja di Chrome (v33). Berikut adalah perbandingan dari solusi yang ditawarkan orang: jsfiddle.net/luken/M6295Apa yang biasanya saya lakukan jika saya ingin melihat keadaannya pada saat itu adalah saya hanya mengonversinya menjadi string JSON.
sumber
function odump(o){ console.log($.parseJSON(JSON.stringify(o))); }
Vanilla JS:
@ jawaban evan sepertinya yang terbaik di sini. Cukup (ab) gunakan JSON.parse / stringify untuk secara efektif membuat salinan objek.
Solusi spesifik JQuery:
Anda dapat membuat snapshot objek pada titik waktu tertentu dengan
jQuery.extend
Apa yang sebenarnya terjadi di sini adalah jQuery adalah membuat objek baru dengan
test
konten objek, dan mencatatnya (sehingga tidak akan berubah).AngularJS (1) solusi spesifik:
Angular menyediakan
copy
fungsi yang dapat digunakan untuk efek yang sama:angular.copy
Fungsi bungkus Vanilla JS:
Berikut adalah fungsi yang membungkus
console.log
tetapi akan membuat salinan dari setiap benda sebelum log mereka keluar.Saya menulis ini sebagai jawaban atas beberapa fungsi yang serupa tetapi kurang kuat dalam jawabannya. Ini mendukung banyak argumen, dan tidak akan mencoba untuk menyalin sesuatu jika mereka bukan objek biasa .
contoh penggunaan :
consoleLogWithObjectCopy('obj', {foo: 'bar'}, 1, /abc/, {a: 1})
sumber
Itu
> Object
di konsol, tidak hanya menunjukkan kondisi saat ini. Sebenarnya menunda membaca objek dan properti itu sampai Anda memperluasnya.Sebagai contoh,
Kemudian perluas panggilan yang pertama, jika Anda melakukannya sebelum yang kedua
console.log
kembalisumber
menggunakan petunjuk Xeon06, Anda dapat mengurai JSON-nya di sebuah objek, dan di sini adalah fungsi log yang sekarang saya gunakan untuk membuang objek saya:
sumber
Saya mendefinisikan sebuah utilitas:
dan ketika saya ingin masuk konsol saya cukup lakukan:
Ini bekerja dengan sangat baik!
sumber
Anda mungkin ingin mencatat objek dengan cara yang dapat dibaca manusia:
Ini indentasi objek dengan 2 spasi di setiap level.
Bagaimana saya bisa mencetak JSON menggunakan JavaScript?
sumber
Ada opsi untuk menggunakan perpustakaan debugger.
https://debugjs.net/
Cukup sertakan skrip ke halaman web Anda dan masukkan pernyataan log.
Penebangan
sumber
Saya mungkin tertembak karena menyarankan ini, tetapi ini bisa diambil satu langkah lebih jauh. Kita dapat langsung memperluas objek konsol itu sendiri untuk membuatnya lebih jelas.
Saya tidak tahu apakah ini akan menyebabkan beberapa jenis tabrakan perpustakaan / kehancuran nuklir / rip dalam ruangwaktu kontinum. Tapi itu bekerja dengan baik dalam tes qUnit saya. :)
sumber
Cukup segarkan halaman setelah Anda membuka konsol atau membuka konsol sebelum Anda mengirimkan permintaan ke halaman yang ditargetkan ....
sumber
Cukup cetak seluruh objek pada konsol.
sumber