【问题标题】:Why does console.log() only print member fields?为什么 console.log() 只打印成员字段?
【发布时间】:2014-01-14 01:10:25
【问题描述】:

如果我运行以下命令:

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 中是安全的,即,您是否可以依赖不存在的方法?考虑?

【问题讨论】:

标签: javascript node.js mongodb


【解决方案1】:

console.log 在不同环境中的实现方式不同。那是因为它所做的只有在查看其结果的工具的上下文中才有意义。在 Chrome 中,你有一个检查器,可以钻入对象。在节点中,它将文本输出到命令行,而您的功能要少得多。

这纯粹是console.log 中的实现细节,您应该使用实现的差异来假设对象属性在其他上下文中的工作方式,比如说...将对象写入 mongodb .

【讨论】:

    【解决方案2】:

    这只是日志实现的区别(实际上更准确地说是检查的区别)。

    【讨论】:

      猜你喜欢
      • 2018-11-03
      • 1970-01-01
      • 2012-12-30
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 1970-01-01
      • 2017-05-08
      • 2011-12-11
      相关资源
      最近更新 更多