Percubaan untuk mensirikan contoh ralat menggunakan JSON.stringify menghasilkan objek kosong. Tingkah laku ini timbul daripada deskriptor sifat tersembunyi bagi ralat.
Mengapa JSON.stringify Gagal:
Penerangan sifat untuk kejadian ralat ditetapkan dengan enumerable: false, menghalangnya sifat daripada dimasukkan dalam rentetan.
Meneroka Sifat dan Deskriptor:
const error = new Error('sample message'); const propertyNames = Object.getOwnPropertyNames(error); propertyNames.forEach(property => console.log(property, Object.getOwnPropertyDescriptor(error, property)));
Output:
stack { get: [Function], set: [Function], enumerable: false, configurable: true } arguments { value: undefined, writable: true, enumerable: false, configurable: true } type { value: 'custom message', writable: true, enumerable: false, configurable: true } message { value: 'custom message', writable: true, enumerable: false, configurable: true }
Penyelesaian Menggunakan Object.getOwnPropertyNames:
Untuk memasukkan sifat ralat dalam rentetan, gunakan JSON.stringify(err, Object.getOwnPropertyNames(err)). Ini memberikan akses kepada sifat yang tidak boleh dikira.
const serializedError = JSON.stringify(error, Object.getOwnPropertyNames(error));
Penyelesaian Tambahan:
Atas ialah kandungan terperinci Mengapa JSON.stringify Mengembalikan Objek Kosong Apabila Mensiri Ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!