2013-09-26 12 views
8

Mam funkcję:Jak wydrukować Funkcja Podpis w javascript

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

Jakiś czas później Chcę zobaczyć podpis funkcji podczas debugowania.

Po wypróbowaniu console.log(fs.readFile) otrzymuję [ FUNCTION ].

To nie daje mi żadnych informacji.

Jak mogę uzyskać podpis funkcji?

+1

Brak typów w javascript, więc nie ma wiele z podpisem. – Amberlamps

+0

@Amberlamps Czy mogę znać liczbę zmiennych, które ta funkcja ma w podpisie? Chociaż możemy przekazać tyle, ile chcemy. –

+0

Nie można odczytać OOTB podpisu z powodu brakujących typów, ale myślę, że to [SO-odpowiedź] (http://stackoverflow.com/questions/4833399/how-to-detect-a-javascript-function-with-a -certain-signature-has-been-registered) pomoże ci zbudować funkcję pomocnika do wykrywania podpisu. – Martin

Odpowiedz

16

W node.js konkretnie trzeba konwertować funkcji ciąg przed zalogowaniem:

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

lub użyć skrótu jak foo+""

2

Nie jestem pewien, czego chcesz, ale spróbuj spojrzeć na log konsoli tego skrzypka, drukuje całą definicję funkcji. Patrzę na chrome console.log output.

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

DEMO http://jsfiddle.net/K7DMA/

+0

Masz rację, kod jest dostępny po wywołaniu doString() obiektu funkcji – Damask

1

Jeśli to, co masz na myśli przez „podpis funkcja” jest jak wiele argumentów ona zdefiniowana, można użyć:

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

Wszystkie funkcje automatycznie pobierają właściwość length.