/ / Pourquoi les erreurs ne peuvent-elles pas être stringifiées? [dupliquer] - javascript

Pourquoi les erreurs ne peuvent-elles pas être codifiées? [dupliquer] - javascript

Pourquoi les erreurs ne peuvent-elles pas être stringifiées?

JSON.stringify(new ReferenceError("foo")); // {}

Quand par exemple, Date fait quelque chose de plus utile:

JSON.stringify(new Date()); // "2015-04-01T10:23:24.749Z"

Réponses:

2 pour la réponse № 1

JavaScript Error les objets ne sont pas énumérable. Vous pouvez le vérifier facilement:

new Error("Test").propertyIsEnumerable("message");
// -> false

Vous pouvez cependant définir votre propre toJSON fonction sur l'objet d'erreur:

Object.defineProperty(Error.prototype, "toJSON", {
value: function () {
return {value: "Test"};
},
configurable: true
});

JSON.stringify(new Error());
-> "{value: "Test"}"