2012-09-17 4 views
5

मेरे पास एक कक्षा है जो कुछ उदाहरण गुणों को Object.defineProperties के माध्यम से परिभाषित करती है और मुझे यह पता लगाने के लिए JSDoc 3 प्राप्त करने में बड़ी कठिनाई हो रही है कि वे अपनी कक्षा से संबंधित हैं।ऑब्जेक्ट.डेफिनप्रॉपर्टीज के माध्यम से जोड़े गए इंस्टेंस सदस्यों को सही ढंग से कैसे दस्तावेज़ित किया जा सकता है?

यहाँ है कि मैं क्या साथ काम कर रहा हूँ का एक सरलीकृत संस्करण है:

/** @exports mymodule */ 
function mymodule(exports) { 
    /** @constructor 
     * @param {String} foo A foo. 
     * @param {String} bar A bar. 
     * @classdesc Has a foo and a bar. 
     */ 
    function Example(foo, bar) { 
     Object.defineProperties(this, { 
      /** A foo and a bar 
       * @memberof Example 
       */ 
      foobar: { enumerable: false, value: foo + bar, writable: false } 
     }); 
    } 

    exports.Example = Example; 
} 

जब मैं JSDoc चलाने के लिए, मैं के लिए mymodule, Example, foo, और bar, लेकिन नहीं foobar उत्पादन मिलता है। अगर मैं के लिए @memberof टैग हटा देता हूं, तो यह वैश्विक के रूप में पंजीकृत हो जाता है। मैंने @memberof mymmodule~Example को दोनों Object.defineProperties कॉल और ऑब्जेक्ट को पास करने के लिए, और इसे Object.defineProperty में परिवर्तित करने की कोशिश की है, लेकिन परिणाम नहीं बदलते हैं।

को Example से संबंधित कैसे कर सकता हूं?

उत्तर

8

प्रत्येक उदाहरण के माध्यम से खोदने के बाद मुझे मिल सकता है, मैंने अंततः आवश्यक अवशोषण को इकट्ठा किया - @memberof वास्तव में चाल है, लेकिन जेएसडीओक को लगता है कि नामपैथ में इस्तेमाल होने वाले मॉड्यूल को स्पष्ट रूप से चिह्नित किया जाना चाहिए। निम्नलिखित पूरी तरह से काम किया:

/** A foo and a bar 
    * 
    * @type String 
    * @instance 
    * @memberof module:mymodule~Example 
    */ 
+2

वेबस्टॉर्म, एकाधिक फाइलों के साथ प्रयास किया: एस काम नहीं करता है ... – inf3rno

0

कई घंटों के लिए चारों ओर नगण्य के बाद, मैं अंत में यह @memberOf! साथ काम मिल गया। ऊपरी भाग "ओ" और बैंग "!" नोट करें

/** 
* Description 
* @memberOf! MyClass 
* @type {String} 
*/ 
var myString; 
+1

क्या आप कोड में कहां जाते हैं इसका एक और वर्बोज उदाहरण दे सकते हैं? मैं इसे कहीं भी काम करने के लिए प्रतीत नहीं कर सकता। –

+1

मैंने हाल ही में जेएसडीक में स्विच किया है और यह कुछ समय रहा है। आप जो हासिल करना चाहते हैं उसके आधार पर - मेरे मामले में यह कथन हर जगह होना चाहिए, जो कि प्रत्येक चर/संपत्ति और किसी ऑब्जेक्ट के फ़ंक्शन/विधि से ऊपर है। – auco

0

आप भी इस तरह @memberOf के स्थान पर @lends एनोटेशन की कोशिश कर सकते:

Object.defineProperties(this, /** @lends Example# */{ 
    /** A foo and a bar */ 
    foobar: { enumerable: false, value: foo + bar, writable: false } 
}); 

वर्ग के नाम के बाद तेज प्रतीक मत भूलना बताने के लिए jsdoc सदस्यों उदाहरण के सदस्यों और नहीं कर रहे हैं स्थिर सदस्य

संबंधित मुद्दे