2013-09-26 14 views
8

Ho una funzione:Come stampare firma di funzione in javascript

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

Qualche tempo dopo voglio vedere la firma della funzione durante il debug.

quando ho provato console.log(fs.readFile) ricevo [ FUNCTION ].

che non mi dà alcuna informazione.

Come posso ottenere la firma della funzione?

+1

Non ci sono tipi in javascript, quindi non c'è molta firma. – Amberlamps

+0

@Amberlamps posso conoscere il numero di variabili Questa funzione ha, nella sua firma? Anche se possiamo passare quanti ne vogliamo. –

+0

Impossibile leggere l'ootb della firma a causa dei tipi mancanti, ma penso che questo [risposta SO] (http://stackoverflow.com/questions/4833399/how-to-detect-a-javascript-function-with-a -certain-signature-has-been-registered) ti aiuterà a creare una funzione di supporto per rilevare la firma. – Martin

risposta

16

In node.js specifico, è necessario convertire la funzione di stringa prima registrazione:

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

o utilizzare una scorciatoia come foo+""

2

Non sono sicuro di quello che vuoi ma prova a guardare il registro della console di questo violino, esso stampa l'intera definizione di funzione. Sto guardando l'output di console.log chrome.

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

DEMO http://jsfiddle.net/K7DMA/

+0

Hai ragione, il codice è disponibile dopo aver chiamato a Stringa() dell'oggetto funzione – Damask

1

Se quello che vuoi dire dalla "firma funzione" è il numero di argomenti che ha definito, è possibile utilizzare:

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

Tutte le funzioni ottengono automaticamente una proprietà length.

Problemi correlati