当我逐个添加它们时,使用JSDoc来记录数据对象成员的正确方法?

时间:2015-02-24 06:58:52

标签: javascript jsdoc jsdoc3

我有一个JS数据对象,它只包含一些静态项。我并没有一次性宣布这一切{};我从一个空对象开始,一次添加一个项目。 E.g:

var ScapeStuff = {};

// some generic stuff
ScapeStuff.generic = new SomeClass(...);

// water
ScapeStuff.water = new SomeClass(...);

// dirt of various moisture levels
var dry = someValue
var wet = anotherValue
// interpolate moisture...
ScapeStuff.dirt0 = new SomeClass(dry);
ScapeStuff.dirt1 = new SomeClass((dry + dry + wet) / 3);
ScapeStuff.dirt2 = new SomeClass((dry + wet + wet) / 3);
ScapeStuff.dirt3 = new SomeClass(wet);

// some other types of stuff..

// finally, export this data object
module.exports = ScapeStuff;

我想用JSDoc来记录我的ScapeStuff数据对象,并将// water之类的注释行替换为描述该事物的JSDoc注释。

我可以在ScapeStuff = {}上方添加一个巨大的JSDoc注释,并使用@member为每个属性项编写描述,但文件可能很长,所以我真正想要的是对该属性之前的源中的每个属性都有JSDoc注释。

在这种情况下,使用内联JSDoc注释的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

自己找到答案。

首先,我将ScapeStuff容器记录为@namespace,如下所示:

/**
 * Stuff (that is, THREE.Material) that things in scapes can be made out of.
 * @namespace
 */
var ScapeStuff = {};

现在我可以使用@memberof告诉JSDoc我添加到最初空对象的每个新东西都是ScapeStuff名称空间的成员。

/** some generic stuff
  * @memberof ScapeStuff */
ScapeStuff.generic = new SomeClass(...);

/** water
  * @memberof ScapeStuff */
ScapeStuff.water = new SomeClass(...);

所以,我实现了我的愿望 - 我可以记录成员在源代码中出现的位置,并且仍然让JSDoc将它们显示为在父对象中。我也好!