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.
Untuk menyelidiki fenomena ini, pertimbangkan coretan kod berikut:
const error = new Error('simple error message'); console.log(JSON.stringify(error)); // Outputs: '{}'
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']
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); }
Walaupun kekurangan sifat yang boleh dikira, terdapat penyelesaian untuk menyelaraskan objek Ralat asli menggunakan JSON.stringify:
JSON.stringify(err, Object.getOwnPropertyNames(err))
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!