JSDoc 和工厂

JSDoc and factory

我有这样的东西:

var make_point = function (x, y) {
  return {
    x: x,
    y: y,
    length: function () {
      return Math.sqrt(this.x * this.x + this.y * this.y);
    }
  }
}

使用 jsdoc 为此创建文档的最佳方法是什么?

您应该使用 typedef,然后将其用作函数的 return 类型:

/**
 * @typedef Point
 * @property {Number} x
 * @property {Number} y
 * @property {Function} length
 * @property {Point~getProjection} getProjection
 */

/**
 * @callback Point~getProjection
 * @param {Object} axes
 * @returns {Object}
 */

/**
 * @param {Number}
 * @param {Number}
 * @returns {Point}
 */
var make_point = function (x, y) {
  // ...
}

或者您可以使用对象类型:

/**
 * @param {Number}
 * @param {Number}
 * @returns {{x: Number, y: Number, length: Function}}
 */
var make_point = function (x, y) {
  // ...
}