Javascript 为什么错误不能严格化?

Javascript 为什么错误不能严格化?,javascript,Javascript,为什么错误不能严格化 JSON.stringify(new ReferenceError('foo')); // {} 例如,Date做了一些更有用的事情: JSON.stringify(new Date()); // "2015-04-01T10:23:24.749Z" JavaScriptError对象不可用。您可以很容易地验证这一点: new Error('Test').propertyIsEnumerable('message'); // -> false 但是,您可以在错误

为什么错误不能严格化

JSON.stringify(new ReferenceError('foo')); // {}
例如,Date做了一些更有用的事情:

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

JavaScript
Error
对象不可用。您可以很容易地验证这一点:

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"}"

请看[avascript stringify object,包括function类型的成员][1][1]: