javascript - 为什么console.log()只打印成员字段?

标签 javascript node.js mongodb

如果我运行以下命令:

var T = function(x, y) {
   this.x = x;
   this.y = y;
}

T.prototype.foo = function() {
   console.log("test");
}

var o = new T(7,4);

o.foo();
console.log(o);

使用 Node 我得到:

test
{x: 7, y: 4}

但是如果我在 Chrome 中运行它,我会得到:

test
T {x: 7, y: 4, foo: function}

这只是 log() 方法实现的一个变体,还是为什么在输出中忽略 prototype 方法?如果它不仅仅是一个 log() 实现案例,这是否意味着如果您只想保存字段,那么将包含字段和方法的对象保存到 mongodb 中是安全的,即,您可以依赖不被考虑的方法吗?

最佳答案

console.log 在不同的环境中实现方式不同。这是因为它所做的事情只有在查看其结果的工具的背景下才有意义。在 Chrome 中,您有一个检查器,可以深入研究对象。在 Node 中,它将文本输出到命令行,而您的能力要少得多。

这纯粹是 console.log 中的实现细节,您不应该使用实现的差异来假设有关对象属性在其他上下文中如何工作的任何内容,例如...将对象写入 mongodb。

关于javascript - 为什么console.log()只打印成员字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21104397/

相关文章:

javascript - Angular 和语义标记/关注点分离

javascript - 正则表达式匹配没有匹配字符串的字符串后的数字

javascript - 未在 webview iframe 中执行的预加载脚本

javascript - Django D3从mongodb读取csv数据来绘制图表

javascript - Mongoose 连接然后立即断开连接(Node.js + Express)

javascript - 为什么jquery不检查复选框

javascript - 如何在自动完成 jquery 中过滤 JSON 数组并在 JavaScript 中显示动态值?

javascript - 在 Selenium 中测试受密码保护的 URL 的设置是什么?

javascript - 用对象数组中的值替换对象中的键

MongoDB Driver 2.0 C# 有没有办法找出服务器是否关闭?在新的驱动程序中我们如何运行 Ping 命令?