2017-03-31 104 views
1
function Foo() { 
    console.log('Foo'); 
} 

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

console.log(new Foo()); 

结果[email protected]为什么打印对象名称是prototype.constructor的名称而不是nodejs中构造函数的名称?

Foo 
Boo {} 

结果[email protected]

Foo 
Foo {} 

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

+4

控制台输出是非标准的。没有“正确的”输出。 – 4castle

+1

而在Firefox中它是'Object {}'... – georg

回答

1

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

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

哪一个是对的?

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

相关问题