为什么错误不能被字符串化?

时间:2015-04-01 10:20:52

标签: javascript

为什么错误不能被字符串化?

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

例如,当Date执行更有用的操作时:

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

1 个答案:

答案 0 :(得分:2)

JavaScript Error个对象不是enumerable。您可以轻松验证:

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

但是,您可以在错误对象上定义自己的toJSON函数:

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

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