Web 開発の分野では、JSON.stringify 関数は JavaScript オブジェクトを JSON 文字列に変換するための強力なツールです。ただし、ネイティブ Error オブジェクトを文字列化しようとすると、異常な動作が発生します。予期されたエラー情報の代わりに、空のオブジェクトが返されます。
この現象を詳しく調べるには、次のコード スニペットを検討してください。
const error = new Error('simple error message'); console.log(JSON.stringify(error)); // Outputs: '{}'
As上で示したように、JSON.stringify は空のオブジェクトを返し、ネイティブ Error オブジェクトのプロパティが文字列化されていないことを示しています。この動作は、Error オブジェクトに列挙可能なプロパティがないことが原因です。
これを確認するには、Object.getOwnPropertyNames を使用して、Error オブジェクトで定義されているプロパティの名前を取得できます。
console.log(Object.getOwnPropertyNames(error)); // Outputs: ['stack', 'arguments', 'type', 'message']
しかし、プロパティ記述子を検査すると、すべての列挙可能属性が false に設定されていることがわかります。 property:
for (var property in error) { var descriptor = Object.getOwnPropertyDescriptor(error, property); console.log(property, descriptor); }
列挙可能なプロパティが不足しているにもかかわらず、JSON.stringify:
JSON.stringify(err, Object.getOwnPropertyNames(err))
以上がネイティブ エラー オブジェクトを文字列化すると、JSON.stringify が空のオブジェクトを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。