2013-03-20 3 views
1

Мне интересно, как записать свойства this. в функцию конструктора класса. Например, я попробовал @name тег, чтобы назвать свой класс, но не генерировать документацию для this.foo:Альтернатива «@name» для документирования свойств `this`

/** 
* @name ClassName 
* @constructor 
*/ 
function noname(){ 
    /** @type {String} */ 
    this.foo = "bar"; 
} 

я могу решить, как это:

/** 
* @name ClassName 
* @constructor 
*/ 
function noname(){ 
    /** 
    * @type {String} 
    * @name ClassName#foo 
    */ 
    this.foo = "bar"; 
} 

или таким образом:

/** 
* @name ClassName 
* @constructor 
*/ 
function noname(){ 
    /** @lends ClassName# */ 
    var that = this; 

    /** @type {String} */ 
    that.foo = "bar"; 
} 

Однако, ни один не является удовлетворительным, так что будет требовать либо изменение много существующего кода или добавления всех имен свойств в комментариях JSDoc.

С @name не делает трюк, есть ли альтернативный тег, который будет?

ответ

2

Попробуйте использовать @alias тег вместо:

/** 
* @alias ClassName 
* @constructor 
*/ 
function noname(){ 
    /** @type {String} */ 
    this.foo = "bar"; 
} 

В общем, используйте тег @alias переименовать символ, который существует в вашем коде; используйте тег @name, если вы документируете символ, который не отображается в вашем коде (например, метод, созданный во время выполнения).

0

@name un-binds docblock из следующего кода.

http://usejsdoc.org/tags-name.html

Предупреждение: При использовании @name тег, вы сообщаете JSDoc игнорировать окружающий код и относиться к документации комментарий в изоляции. Во многих случаях лучше использовать @alias тег вместо

Поэтому любые внутренние элементы должны иметь надлежащую @name тоже (см http://usejsdoc.org/about-namepaths.html для правильного синтаксиса).