我有一個函數:如何打印功能簽名在JavaScript
fs.readFile = function(filename, callback) {
// implementation code.
};
一段時間後我想看看在調試過程中的功能的簽名。
當我試着console.log(fs.readFile)
我得到[ FUNCTION ]
。
這並沒有給我任何信息。
如何獲取該函數的簽名?
我有一個函數:如何打印功能簽名在JavaScript
fs.readFile = function(filename, callback) {
// implementation code.
};
一段時間後我想看看在調試過程中的功能的簽名。
當我試着console.log(fs.readFile)
我得到[ FUNCTION ]
。
這並沒有給我任何信息。
如何獲取該函數的簽名?
在node.js的具體情況,你必須將函數轉換爲字符串記錄前:
$ node
> foo = function(bar, baz) { /* codez */ }
[Function]
> console.log(foo)
[Function]
undefined
> console.log(foo.toString())
function (bar, baz) { /* codez */ }
undefined
>
或使用像foo+""
我不確定你想要什麼,但試着看這個小提琴的控制檯日誌,它打印整個功能定義。我正在查看chrome console.log輸出。
var fs = fs || {};
fs.readFile = function(filename, callback) {
alert(1);
};
console.log(fs.readFile);
你說得對,代碼在函數對象的toString()調用後可用 – Damask
一個快捷方式。如果你的意思通過「函數簽名」,它定義了多少個參數,可以使用:
function fn (one) {}
console.log(fn.length); // 1
所有函數都會自動獲取長度屬性。
JavaScript中沒有類型,所以沒有太多的簽名。 – Amberlamps
@Amberlamps我可以知道這個函數在其簽名中有多少個變量?雖然我們可以通過儘可能多的我們想要的。 –
由於缺少類型,您無法讀取簽名ootb,但我認爲這是[SO-answer](http://stackoverflow.com/questions/4833399/how-to-detect-a-javascript-function-with-a -ertain-signature-has-been-registered)將幫助你構建一個幫助函數來檢測簽名。 – Martin