You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JSDoc 3为JavaScript字典中的函数生成文档?

解决JSDoc 3无法生成字典中函数文档的问题

首先,问题出在你当前的@function标签没有明确关联到Minitel.actions这个对象成员上——JSDoc默认不会自动识别赋值给对象属性的函数属于该对象的成员,所以需要补充标签来建立归属关系。

下面是两种可行的解决方法,你可以任选其一:

方法一:使用@function标签指定完整路径

直接在@function标签后写出函数的完整命名路径,让JSDoc明确它的归属:

/**
 * @namespace Minitel
 */
var Minitel = Minitel || {}

/**
 * @callback actionCallback
 * @param {Stream} stream 需添加Videotex代码的Minitel流
 * @param {Object} data 数据对象
 * @param {?number} offsetX X轴偏移量
 * @param {?number} offsetY Y轴偏移量
 */

/**
 * 动作回调函数集合
 * @type {Object.<string, actionCallback>}
 */
Minitel.actions = {}

/**
 * 处理"content-string"动作,传入的值需已准备好可发送至流中。
 * @function Minitel.actions["content-string"]
 * @param {Stream} stream 需添加Videotex代码的Minitel流
 * @param {Object} data 数据对象
 */
Minitel.actions["content-string"] = function(stream, data) { /* ... */ }

/**
 * 处理"content-block"动作,仅支持左对齐、居中对齐和右对齐。
 * @function Minitel.actions["content-block"]
 * @param {Stream} stream 需添加Videotex代码的Minitel流
 * @param {Object} data 数据对象
 * @param {?number} offsetX X轴偏移量
 * @param {?number} offsetY Y轴偏移量
 */
Minitel.actions["content-block"] = function(stream, data, offsetX, offsetY) { /* ... */ }

方法二:使用@memberof + @alias标签

这种方式更灵活,适合需要明确归属同时保持注释结构清晰的场景:

/**
 * @namespace Minitel
 */
var Minitel = Minitel || {}

/**
 * @callback actionCallback
 * @param {Stream} stream 需添加Videotex代码的Minitel流
 * @param {Object} data 数据对象
 * @param {?number} offsetX X轴偏移量
 * @param {?number} offsetY Y轴偏移量
 */

/**
 * 动作回调函数集合
 * @type {Object.<string, actionCallback>}
 */
Minitel.actions = {}

/**
 * 处理"content-string"动作,传入的值需已准备好可发送至流中。
 * @memberof Minitel.actions
 * @alias Minitel.actions["content-string"]
 * @function
 * @param {Stream} stream 需添加Videotex代码的Minitel流
 * @param {Object} data 数据对象
 */
Minitel.actions["content-string"] = function(stream, data) { /* ... */ }

/**
 * 处理"content-block"动作,仅支持左对齐、居中对齐和右对齐。
 * @memberof Minitel.actions
 * @alias Minitel.actions["content-block"]
 * @function
 * @param {Stream} stream 需添加Videotex代码的Minitel流
 * @param {Object} data 数据对象
 * @param {?number} offsetX X轴偏移量
 * @param {?number} offsetY Y轴偏移量
 */
Minitel.actions["content-block"] = function(stream, data, offsetX, offsetY) { /* ... */ }

额外优化建议

你原来的@member {Object.<string, actionCallback>}可以改成@type {Object.<string, actionCallback>},这是更标准的类型标注方式,JSDoc对@type的解析会更准确。

保持你当前的生成命令和jsdoc.json配置不变,修改注释后重新运行jsdoc -p -c jsdoc.json app/*.js library/minitel/*.js,就能在生成的文档中看到Minitel.actions下的两个函数了。

内容的提问来源于stack exchange,提问作者zigazou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:56:46