栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

无法使用JSON.stringify将错误字符串化吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

无法使用JSON.stringify将错误字符串化吗?

您可以定义

Error.prototype.toJSON
来检索
Object
表示的纯文本
Error

if (!('toJSON' in Error.prototype))Object.defineProperty(Error.prototype, 'toJSON', {    value: function () {        var alt = {};        Object.getOwnPropertyNames(this).forEach(function (key) { alt[key] = this[key];        }, this);        return alt;    },    configurable: true,    writable: true});var error = new Error('testing');error.detail = 'foo bar';console.log(JSON.stringify(error));// {"message":"testing","detail":"foo bar"}

使用

Object.defineProperty()
添加
toJSON
而不将其
enumerable
本身作为属性。


关于修改

Error.prototype
,虽然
toJSON()
可能没有
Error
专门针对它进行修改,但是该方法通常仍针对对象进行了标准化(参见:步骤3)。因此,冲突或冲突的风险很小。

不过,为了完全避免它,可以使用

JSON.stringify()
replacer
参数代替:

function replaceErrors(key, value) {    if (value instanceof Error) {        var error = {};        Object.getOwnPropertyNames(value).forEach(function (key) { error[key] = value[key];        });        return error;    }    return value;}var error = new Error('testing');error.detail = 'foo bar';console.log(JSON.stringify(error, replaceErrors));


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/432246.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号