2013-09-26 38 views
8

我有一個函數:如何打印功能簽名在JavaScript

fs.readFile = function(filename, callback) { 
    // implementation code. 
}; 

一段時間後我想看看在調試過程中的功能的簽名。

當我試着console.log(fs.readFile)我得到[ FUNCTION ]

這並沒有給我任何信息。

如何獲取該函數的簽名?

+1

JavaScript中沒有類型,所以沒有太多的簽名。 – Amberlamps

+0

@Amberlamps我可以知道這個函數在其簽名中有多少個變量?雖然我們可以通過儘可能多的我們想要的。 –

+0

由於缺少類型,您無法讀取簽名ootb,但我認爲這是[SO-answer](http://stackoverflow.com/questions/4833399/how-to-detect-a-javascript-function-with-a -ertain-signature-has-been-registered)將幫助你構建一個幫助函數來檢測簽名。 – Martin

回答

16

在node.js的具體情況,你必須將函數轉換爲字符串記錄前:

$ node 
> foo = function(bar, baz) { /* codez */ } 
[Function] 
> console.log(foo) 
[Function] 
undefined 
> console.log(foo.toString()) 
function (bar, baz) { /* codez */ } 
undefined 
> 

或使用像foo+""

2

我不確定你想要什麼,但試着看這個小提琴的控制檯日誌,它打印整個功能定義。我正在查看chrome console.log輸出。

var fs = fs || {}; 
fs.readFile = function(filename, callback) { 
    alert(1); 
}; 
console.log(fs.readFile); 

DEMO http://jsfiddle.net/K7DMA/

+0

你說得對,代碼在函數對象的toString()調用後可用 – Damask

1

一個快捷方式。如果你的意思通過「函數簽名」,它定義了多少個參數,可以使用:

function fn (one) {} 
console.log(fn.length); // 1 

所有函數都會自動獲取長度屬性。