2013-04-17 49 views

回答

7

當你調用console.log(foo),控制檯建立一個非標準化的顯示器(它不是的EcmaScript的一部分)。在大多數情況下(但不包括基本對象),它調用的參數的toString功能(但更多的工作,比如增加引號字符串,設置顏色,提供對象瀏覽等)。

函數的toString功能簡單地打印的代碼。

如果你想看到所有的屬性,你可以做

console.dir(foo); 

或(at least on Chrome

console.log("%O", foo); 

你會看到有一個專門的toString功能的其他對象相同的現象。

例如:

var a = new Number(3); 
a.b = 4; 
console.log(a); // logs just 3 
console.dir(a); // lets you see b 
+0

我不認爲它會調用'toString'。控制檯只是格式化它看起來合適的價值。畢竟'console.log({})'不顯示'[object Object]'(至少在Chrome中)。 –

+0

@FelixKling其實這取決於...我正在看它。我還測試了'Object.prototype.toString.apply(富)' –

+0

哇,謝謝你的console.log( 「%O」 FOO);,永遠不知道,有一個%氧氣 –

1

使用console.dir()看到a

>>>>console.log(foo); 
function() 
>>>>console.dir(foo); 
a   "an attribute" 
prototype Object { } 
0

dystroy是正確的。函數是toString打印代碼的對象。

console.log(foo.a); 

會做的伎倆

相關問題