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

时间:2017-03-31 13:26:08

标签: javascript node.js

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 {}

我认为chrome看起来更合理,因为它的反应是构造函数的名称。哪一个是对的?

1 个答案:

答案 0 :(得分:1)

  

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

因为nodejs控制台是在JS环境中实现的,并且只能查询val.constructor.name。相比之下,Chrome devtools是调试器,其控制台可以访问实例的内部详细信息。

  

哪一个是对的?

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