Rumah > hujung hadapan web > tutorial js > Mengapakah JSON.stringify Mengembalikan Objek Kosong Apabila Menyatukan Objek Ralat Asli?

Mengapakah JSON.stringify Mengembalikan Objek Kosong Apabila Menyatukan Objek Ralat Asli?

Barbara Streisand
Lepaskan: 2024-12-02 05:47:09
asal
1039 orang telah melayarinya

Why Does JSON.stringify Return an Empty Object When Stringifying Native Error Objects?

JSON.stringify: Stringifying Native Error Messages

Dalam bidang pembangunan web, fungsi JSON.stringify ialah alat yang berkuasa untuk menukar objek JavaScript kepada rentetan JSON. Walau bagaimanapun, tingkah laku luar biasa timbul apabila cuba untuk menyelaraskan objek Ralat asli. Daripada maklumat ralat yang dijangkakan, objek kosong dikembalikan.

Meneroka Anomali

Untuk menyelidiki fenomena ini, pertimbangkan coretan kod berikut:

const error = new Error('simple error message');
console.log(JSON.stringify(error)); // Outputs: '{}'
Salin selepas log masuk

Sebagaimana ditunjukkan di atas, JSON.stringify mengembalikan objek kosong, menunjukkan bahawa sifat objek Ralat asli tidak bertali. Tingkah laku ini berpunca daripada kekurangan sifat terhitung dalam objek Ralat.

Untuk mengesahkan ini, kita boleh menggunakan Object.getOwnPropertyNames untuk mendapatkan semula nama sifat yang ditakrifkan dalam objek Ralat:

console.log(Object.getOwnPropertyNames(error)); // Outputs: ['stack', 'arguments', 'type', 'message']
Salin selepas log masuk

Walau bagaimanapun, jika kami memeriksa deskriptor sifat, kami mendapati bahawa atribut boleh dikira ditetapkan kepada palsu untuk semua sifat:

for (var property in error) {
  var descriptor = Object.getOwnPropertyDescriptor(error, property);
  console.log(property, descriptor);
}
Salin selepas log masuk

Penyelesaian kepada Enigma

Walaupun kekurangan sifat yang boleh dikira, terdapat penyelesaian untuk menyelaraskan objek Ralat asli menggunakan JSON.stringify:

JSON.stringify(err, Object.getOwnPropertyNames(err))
Salin selepas log masuk

Dengan menyediakan senarai nama harta sebagai hujah kedua kepada JSON.stringify, kami secara eksplisit mengarahkannya untuk memasukkannya ke dalam proses rentetan, walaupun ia tidak boleh dikira secara lalai.

Atas ialah kandungan terperinci Mengapakah JSON.stringify Mengembalikan Objek Kosong Apabila Menyatukan Objek Ralat Asli?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan