如果我运行以下内容:
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
中是安全的,即,您是否可以依赖没有考虑的方法?
答案 0 :(得分:4)
console.log
在不同环境中的实现方式不同。这是因为它所做的只是在工具的上下文中才有意义。在Chrome中,您有一个检查器,可以钻取对象。在节点中,它将文本输出到命令行,在那里你的能力要低得多。
这纯粹是console.log
中的实现细节,你应该不使用实现的差异来假设对象属性如何在其他上下文中工作,比如说...写对象到mongodb。
答案 1 :(得分:1)
这只是一个日志实现差异(实际上更准确地说是检查差异)。