为什么node.js中有的对象不能够打印出来?

bsnry 2017-10-09 09:54:47
为什么node.js中有的对象不能够打印出来,比如用打印函数会出现object之类的提示,

按道理来说,随手写一个js对象,比如:
var student = {
age:12,
name: "nhao",

fun: function()
{

}
}

console.log(student);


都能过打印出属性的信息来,可我在node.js的代码里见到,打印某些对象的时候,必须用通过某些函数来转换,如:

message = JSON.stringify(newMessage);
然后打印message。

不然是无法打印的? 这是什么原因? 为什么有的能打印,有的则不能。
...全文
907 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
当作看不见 2017-10-09
  • 打赏
  • 举报
回复
表示没有遇到过这种情况 , 触发条件 console.log("字符串 +"+obj);输出的时候,对象会被转化为"[Object Object]"字符串 单独输出 console.log(obj);是不会出现这种情况的.会输出展开的一个对象.
bsnry 2017-10-09
  • 打赏
  • 举报
回复
up 一下,up
当作看不见 2017-10-09
  • 打赏
  • 举报
回复
第一个问题,是的,不要拼接字符串,任何对象或者其他类型,拼接字符串都会调用toString()方法转化为字符串,再打印 第二个问题,其中有一些实现是使用C++实现的native code ,是打印不出来的会简写. 而你标红的字符串这个问题没有深入研究.
bsnry 2017-10-09
  • 打赏
  • 举报
回复
引用 2 楼 qq_29594393 的回复:
表示没有遇到过这种情况 , 触发条件 console.log("字符串 +"+obj);输出的时候,对象会被转化为"[Object Object]"字符串 单独输出 console.log(obj);是不会出现这种情况的.会输出展开的一个对象.
第2个问题,打印node.js 框架express的req对象的时候,app.use或者router里的回调函数的不是有个参数吗?其中一个就是req, 打印这个时候的,发现: socket: Socket { connecting: false, _hadError: false, _handle: TCP { bytesRead: 94, _externalStream: {}, fd: -1, reading: true, owner: [Circular], onread: [Function: onread], onconnection: null, writeQueueSize: 0, _consumed: true }, _parent: null, _host: null, _readableState: ReadableState { objectMode: false, highWaterMark: 16384, buffer: [Object], 这只是片段,用console.log打印出来的,打印req的时候,发现: 花括号前面有个字符串,比如TCP。 这什么原因? 我们知道emacscript的对象是类似json的格式,因此打印一个对象会有花括号,但是花括号前,是不会出现所谓的“字符串”
bsnry 2017-10-09
  • 打赏
  • 举报
回复
引用 2 楼 qq_29594393 的回复:
表示没有遇到过这种情况 , 触发条件 console.log("字符串 +"+obj);输出的时候,对象会被转化为"[Object Object]"字符串 单独输出 console.log(obj);是不会出现这种情况的.会输出展开的一个对象.
对,我说的就是这种情况,你的意思是说,任何对象都能打印, 但是打印之前,不要拼接字符串,是这个意思吗?

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧