为什么打印对象名称是prototype.constructor的名称,而不是nodejs中构造函数的名称?

function Foo () { console.log('Foo'); } Foo.prototype.constructor = function Boo () { console.log('Boo'); } console.log(new Foo()); 

导致nodejs@v7.3.0

 Foo Boo {} 

导致chrome@57.0.2987.110

 Foo Foo {} 

我认为铬的外观更合理,因为它的反应是构造函数的名字。 哪一个是对的?

为什么打印对象名称是prototype.constructor的名称,而不是nodejs中构造函数的名称?

因为nodejs控制台是在JS环境中实现的,只能查询val.constructor.name 。 相比之下,Chrome devtools是一个debugging器 ,其控制台可以访问实例的内部细节。

哪一个是对的?

两者都没有。 没有标准的控制台输出格式。 每个实现都尽可能地有用。