console.log格式错误对象与Error.prototype.toString不同

时间:2015-12-05 01:00:08

标签: javascript tostring

我看到了Error.prototype.toString实现here

它主要将error.nameerror.message打印为name + ': ' + msg

但是当我将Error对象传递给console.log时,我发现file not exists错误会将更多属性打印为errno, code, syscall等。

console.log调用什么来打印Error对象的字符串摘要?

代码:

var fs = require('fs')

fs.readFile('/abcd', 'utf8', function(err, res){
  console.log("the error toString method shows, " + err)
  console.log("the console log's string summary is,")
  console.log(err)
})

输出:

the error toString method shows, Error: ENOENT: no such file or directory, open '/abcd'
the console log's string summary is,
{ [Error: ENOENT: no such file or directory, open '/abcd'] errno: -2, code: 'ENOENT', syscall: 'open', path: '/abcd' }

1 个答案:

答案 0 :(得分:1)

未指定console.log,因此每个浏览器都实现了不同的东西。 (和Node.js一样)如果你想看到究竟是什么,你可以查看浏览器源代码,当然除了IE / Edge之外。

在Node.js中,我假设您使用的是require,代码为: