为啥错误不能被字符串化? [复制]

Posted

技术标签:

【中文标题】为啥错误不能被字符串化? [复制]【英文标题】:Why can Errors not be stringified? [duplicate]为什么错误不能被字符串化? [复制] 【发布时间】:2015-06-05 22:50:00 【问题描述】:

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

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

例如,当 Date 做一些更有用的事情时:

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

【问题讨论】:

看看 [avascript-stringify-object-including-members-of-type-function][1] [1]: ***.com/questions/3685703/… 【参考方案1】:

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

【讨论】:

以上是关于为啥错误不能被字符串化? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能从文件中复制字符串并将其注册到对象中?

为啥我不能在没有括号的插值字符串中使用条件运算符? [复制]

为啥我不能像这样实例化一个对象? [复制]

为啥 http.get 不能再使用字符串了? [复制]

为啥这种语法专门用于初始化字符串文字而不能用于字符数组? [复制]

为啥在写入字符串文字时 scanf 不能按预期工作? [复制]