2017-03-31 72 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是調試器,其控制檯可以訪問實例的內部細節。

哪一個是對的?

兩者都沒有。沒有標準的控制檯輸出格式。每個實現都儘可能地有用。

相關問題