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

时间:2014-01-14 01:10:26

标签: 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中是安全的,即,您是否可以依赖没有考虑的方法?

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

这只是一个日志实现差异(实际上更准确地说是检查差异)。