2012-09-17 11 views
5

Object.defineProperties aracılığıyla birkaç örnek özelliğini tanımlayan bir sınıfa sahibim ve sınıflarına ait olduklarını anlamak için JSDoc 3 almakta zorlanıyorum.Object.defineProperties aracılığıyla eklenen örnek üyelerini doğru şekilde nasıl belgeleyebilirim?

İşte Birlikte çalıştığım şeyi basitleştirilmiş versiyonu: Ben JSDoc çalıştırdığınızda

/** @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; 
} 

, ben mymodule, Example, foo ve bar değil foobar için çıkış olsun. etiketini foobar için kaldırırsam, genel olarak kayıtlı olur. @lends ekleyerek @memberof mymmodule~Example denedim, hem Object.defineProperties aramasına hem de ona geçirilen nesneyi ve Object.defineProperty dönüştürerek, ancak sonuçlar değişmez.

foobar'u Example'a ait olarak nasıl belgeleyebilirim?

cevap

8

Bulduğum her örnekte kazandıktan sonra, sonunda gerekli olan ilaveyi bir araya getirdim - @memberof gerçekten hiledir, ancak JSDoc, namepathlarda kullanılan modüllerin açık bir şekilde işaretlenmesini gerektiriyor gibi görünüyor. Aşağıdaki mükemmel çalıştı:

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

Webstorm, birden çok dosya ile çalıştı: S çalışmıyor ... – inf3rno

0

saatlerce uğraşırsanız sonra nihayet o @memberOf! çalışmak lazım. Büyük harf "O" ve patlama "!"

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

Kodda nereye gittiğine dair daha ayrıntılı bir örnek verebilir misiniz? Onu herhangi bir yerde çalışmak için alamıyorum. –

+1

Kısa bir süre önce JSDuck'a geçtim ve biraz zaman geçti. Neyi başarmak istediğinize bağlı olarak - benim durumumda bu ifade her yerde olmalıydı, bu bir nesnenin her değişkeninin/özelliklerinin ve işlevinin/metodunun üzerindedir. – auco

0

Ayrıca böyle @memberOf yerine @lends ek açıklama deneyebilirsiniz:

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

jsdoc üyelerinin örnek üyeleri ve olmayan anlatmak için sınıf adından sonra keskin sembolü unutma Statik üyeler

İlgili konular