2013-02-22 22 views
1

我第一次注意到這一點,同時檢查了「CamanJS」項目。這個問題很難解釋,除非你只是這樣做。如果您訪問camanjs.com,然後使用Firebug或Chrome JavaScript控制檯,請輸入Caman這個詞,然後按回車。不帶Caman()括號 - 只是Caman。它會輸出:Version 4.1.0, Released 2/12/2013如何獲得JavaScript對象定義以在控制檯中提供自定義輸出?

但是,如果你看看typeof Caman,這只是一個「功能」。那麼你怎麼得到它來輸出一個自定義的字符串,而沒有真正調用函數呢?這是通過某種prototype擴展完成的嗎?

+1

另一個有趣的 「天然」 屬性是'valueOf':'VAR X =函數(){}; \t x.valueOf = function(){return 5;}; // x + 3 === 8' – Teemu 2013-02-22 20:15:26

回答

6

如果函數具有自定義toString()方法,則會發生這種情況。

例如:

function x() { } 
x.toString = function() { return "Hi there!"; }; 
console.log(x) 
+0

+1好玩先生 – AlienWebguy 2013-02-22 20:04:20

+0

有趣的是,即使你使用'console.dir'(在Chrome中測試過),'toString'的返回被用作對象的名字, – bfavaretto 2013-02-22 20:04:23

相關問題