2012-05-21 33 views
33

Tôi đang sử dụng lớp cơ sở "$.widget()" của jQuery cung cấp phương thức option(). Vì phương thức này không có trong mã của tôi, tôi không có chỗ để ghi lại đối số.JSDoc: Làm cách nào để ghi lại "tùy chọn" đối tượng theo nghĩa đen cho "lớp" cha mẹ?

Tôi đã cố gắng đặt jsDoc trên các trường trong tùy chọn mặc định theo nghĩa đen, nhưng chúng đơn giản là không được chọn. Sau đó, tôi đã cố gắng sử dụng các thẻ @class@lends trên cùng một đối tượng theo nghĩa đen, nhưng điều này có thể khá khó hiểu vì đối tượng theo nghĩa đen không thực sự là một lớp.

Một phương án khác mà tôi đã thử nghiệm là đặt một cái gì đó như @param options.field description vào jsDoc của hàm tạo. Tuy nhiên, điều này có bất lợi khi tách tài liệu khỏi mã. Ngoài ra, hàm tạo không thực sự có một đối số được gọi là options vì tất cả được xử lý bởi jQuery.

Chuyên gia Javascript của bạn xử lý việc này như thế nào? Thẻ mới có nên được đề xuất không?

+2

Câu hỏi của bạn nghe có vẻ rất giống với cái này: http://stackoverflow.com/questions/6460604/how-to-describe -object-arguments-in-jsdoc –

+0

@LeviHackwith Có, nó tương tự, nhưng như tôi đã mô tả trong câu hỏi chính nó, tôi không có một nơi mà tôi có thể sử dụng thẻ @param bởi vì các anh chàng jQuery đã triển khai tất cả mã tấm nồi hơi (bao gồm cả hàm 'options()' trong đó thẻ @param thường được sử dụng.) –

+1

['/ ** @param {Object. } tùy chọn */'] (http://code.google.com/p/closure-compiler/source/browse/trunk/contrib/externs/jquery-1.7.js) có vẻ là một cách để thực hiện. –

Trả lời

67

Nếu tôi hiểu chính xác câu hỏi của bạn, bạn có một chức năng lấy đối tượng tùy chọn và bạn muốn ghi lại tất cả các thành viên của nó?

Một ví dụ thô làm thế nào để làm điều đó trong JSDoc như sau:

/** 
* @description 
* Compliment someone on their something. 
* 
* @param {Object} options 
* @param {String} options.name A person's name 
* @param {String} options.feature A person's property 
*/ 
function flatter (options) { 
    options = options || {}; 
    console.log('%s, loving your %s!', options.name, options.feature); 
} 
+0

Có thể ghi lại tài sản có một khoảng trống trong đó không, ví dụ: 'options ['some property']'? –

+0

Không phải cái gì tôi đã thử, hãy thử một vài biến thể trích dẫn giá trị và chạy trình tạo jsdoc để xem. Xin vui lòng cho chúng tôi biết sau. –

+0

Cũng vì câu hỏi này vẫn bị va chạm, tôi sẽ chỉ làm rõ ở đây: đây không phải là câu trả lời cho câu hỏi cụ thể của tôi bởi vì như tôi đã nói, jQuery cung cấp phương pháp "tùy chọn" để tôi không có phương pháp là đối số. –

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