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看起来更合理,因为它的反应是构造函数的名称。哪一个是对的?
答案 0 :(得分:1)
为什么打印对象名称是prototype.constructor的名称而不是nodejs中构造函数的名称?
因为nodejs控制台是在JS环境中实现的,并且只能查询val.constructor.name
。相比之下,Chrome devtools是调试器,其控制台可以访问实例的内部详细信息。
哪一个是对的?
两者兼而有之。没有标准的控制台输出格式。每个实现都尽可能地有用。