当前位置:  开发笔记 > 编程语言 > 正文

为什么TypeError上的JSON.stringify返回一个空对象

如何解决《为什么TypeError上的JSON.stringify返回一个空对象》经验,为你挑选了1个好方法。

我正在使用节点4.2,我正在捕获错误并在其上使用JSON.stringify.对于大多数对象,这很好.但是当抛出[TypeError:callback不是函数]时,它返回一个空对象.如果我直接控制它.它可以正常工作.

Mozilla的页面说:

根据传统的转换语义,在字符串化期间将Boolean,Number和String对象转换为相应的原始值.

try {
    ...
} catch (err) {
    console.log('error: ' + JSON.stringify(err)) // outputs {}
}

nicosantange.. 10

当您stringify在TypeError上使用时,您将对没有enumerable属性的对象进行字符串化.

所以,如果你这样做

var typeError = new TypeError("hey")
for(var prop in typeError) {
  console.log(prop) // this does not run
}

当你使用日志时console.log,你正在使用valueOf,所以

var typeError = new TypeError("hey")
typeError.valueOf()  // TypeError: hey(…)

此外,错误知道如何将自己变成一个字符串,所以这也适用:

var typeError = new TypeError("hey")
typeError.toString() // "TypeError: hey"

如果要记录使用普通日志无法看到的对象的属性,则可以使用console.dir该对象.

当你在它上面做的时候typeError,你会发现它有一个message属性:

在此输入图像描述



1> nicosantange..:

当您stringify在TypeError上使用时,您将对没有enumerable属性的对象进行字符串化.

所以,如果你这样做

var typeError = new TypeError("hey")
for(var prop in typeError) {
  console.log(prop) // this does not run
}

当你使用日志时console.log,你正在使用valueOf,所以

var typeError = new TypeError("hey")
typeError.valueOf()  // TypeError: hey(…)

此外,错误知道如何将自己变成一个字符串,所以这也适用:

var typeError = new TypeError("hey")
typeError.toString() // "TypeError: hey"

如果要记录使用普通日志无法看到的对象的属性,则可以使用console.dir该对象.

当你在它上面做的时候typeError,你会发现它有一个message属性:

在此输入图像描述

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有