2015-02-09 2 views
0

Если я определить объект вроде этого:JSDoc: Комментирование экспортированной метод

/** 
* My Cool Object 
* @constructor 
*/ 

function MyCoolObject() { 

     /** 
     * Cool Method, private 
     * @param {!string} parameter 
     */ 

     function localMethod(parameter) { 
      // do stuff 
     } 

     // Export the method 
     this.exportedMethod = localMethod; 

} 

Я хотел бы знать, если это вообще возможно, как сказать JSDoc использовать аннотацию localMethod в exportedMethod или как я могу комментировать exportedMethod, потому что если я делаю:

 // Export the method 

     /** 
     * Cool Method 
     * @param {!string} parameter 
     */ 
     this.exportedMethod = localMethod; 

JSDoc предполагает, что это поле, а не метод, а затем использует только ДЕСК ription, игнорируя часть @param.

ответ

1

Я бы уменьшить его:

/** 
* My Cool Object 
* @constructor 
*/ 

function MyCoolObject() { 
    /** 
    * Cool Method, private 
    * @param {!string} parameter 
    */ 
    this.exportedMethod = function (parameter) { 
     // do stuff 
    }; 

} 

Вы можете сделать var localMethod = this.exportedMethod сразу после того, если вы хотите локальную ссылку на метод. В случае, если вы чрезмерно упрощенны ваш пример, и вы потребности в первом назначить localMethod перед назначением на this.exportedMethod вы могли бы сделать это:

/** 
* My Cool Object 
* @constructor 
*/ 

function MyCoolObject() { 

    function localMethod(parameter) { 
     // do stuff 
    } 

    /** 
    * Cool Method, private 
    * @param {!string} parameter 
    * @function 
    */ 
    // Export the method 
    this.exportedMethod = localMethod; 

} 

@function декларация говорит JSDoc, что она имеет дело с функция.

+0

Второе, что я ищу! Я не хочу уменьшать его, как в вашем первом решении, потому что эти локальные методы также называются локально внутри закрытия объекта, и я предпочитаю сохранять их частными, чтобы они были запутаны и т. Д. – rupps