如果我运行以下命令:
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/