为什么打印对象名称是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器 ,其控制台可以访问实例的内部细节。
哪一个是对的?
两者都没有。 没有标准的控制台输出格式。 每个实现都尽可能地有用。