2013-09-26 38 views
8

Tôi có một chức năng:Làm thế nào để in Chức năng Chữ ký trong javascript

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

Ít lâu sau đó tôi muốn nhìn thấy chữ ký của các chức năng trong quá trình gỡ lỗi.

Khi tôi đã thử console.log(fs.readFile) Tôi nhận được [ FUNCTION ].

Điều đó không cung cấp cho tôi bất kỳ thông tin nào.

Làm cách nào để có chữ ký của hàm?

+1

Không có loại nào trong javascript, do đó không có nhiều chữ ký. – Amberlamps

+0

@Amberlamps Tôi có thể biết số lượng các biến mà hàm này có, trong chữ ký của nó không? Mặc dù chúng tôi có thể vượt qua bao nhiêu tùy thích. –

+0

Bạn không thể đọc ootb chữ ký vì các loại bị thiếu nhưng tôi nghĩ [SO-answer] này (http://stackoverflow.com/questions/4833399/how-to-detect-a-javascript-function-with-a -certain-signature-has-been-registered) sẽ giúp bạn xây dựng một hàm trợ giúp để phát hiện chữ ký. – Martin

Trả lời

16

Trong Node.js đặc biệt, bạn phải chuyển đổi chức năng chuỗi trước khi đăng nhập:

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

hoặc sử dụng một phím tắt như foo+""

2

Tôi không chắc chắn những gì bạn muốn nhưng hãy thử nhìn vào nhật ký giao diện điều khiển của fiddle này, nó in toàn bộ định nghĩa chức năng. Tôi đang tìm kiếm đầu ra chrome console.log.

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

DEMO http://jsfiddle.net/K7DMA/

+0

Bạn nói đúng, mã có sẵn sau khi gọi toString() của đối tượng hàm – Damask

1

Nếu những gì bạn có ý nghĩa bởi "chữ ký chức năng" là số lượng đối số đã xác định, bạn có thể sử dụng:

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

Tất cả các chức năng sẽ tự động nhận được thuộc tính chiều dài.

Các vấn đề liên quan