2016-03-29 3 views
1

Я использую NodeJS и пытаюсь получить JSDoc в собственность, чтобы получить то, что я делаю. У меня есть некоторый код, который выглядит следующим образом:Как документировать module.exports, определенный с помощью object.defineProperty

Object.defineProperty(module, 'exports', { 
    enumerable: true, 
    configurable: true, 
    get: function() { 
     const factory = {}; 

     /** 
     * Output message to the console 
     * @param {string} str 
     */ 
     factory.foo = function(str) { 
      console.log(str); 
     }; 

     return factory; 
    } 
}); 

Экспорт Foo стандартным способом exports.foo = function(str) { ... } не вариант в данном случае.

Другие модули могут включать этот модуль, имеющий доступ к foo (как если бы он был экспортирован напрямую). Например:

var x = require('./x'); 
x.foo('Hello'); 

Так как я могу документировать это так, чтобы JSDoc улавливает, что этот модуль имеет функцию Foo?

ответ

0

я нашел способ, который, кажется, работает:

Object.defineProperty(module, 'exports', { 
    enumerable: true, 
    configurable: true, 
    get: Factory 
}); 

/** 
* Get a factory object. 
* @returns {Factory} 
* @constructor 
*/ 
function Factory() { 
    var factory = Object.create(Factory.prototype); 

    /** 
    * Output a message to the console. 
    * @name Factory#foo 
    * @param {string} str 
    */ 
    factory.foo = function(str) { 
     console.log(str); 
    }; 

    return factory; 
} 
Смежные вопросы