描述使用 Object.defineProperty 定义的属性
Describe property defined with Object.defineProperty
我想为添加为Object.defineProperty
的属性添加 JSDoc 文档。我想这样的事情可能会起作用:
/** @constructor */
function MyClass() {
/** @property {Number} rnd */
Object.defineProperty(this, 'rnd', {
get : function () { return Math.random(); }
});
}
但是生成的 JSDoc 解释没有此属性:
$ jsdoc -X test.js
[
{
"comment": "/** @constructor */",
"meta": {
"range": [ 20, 167 ],
"filename": "test.js",
"lineno": 2,
"path": "/jsdoctest",
"code": {
"id": "astnode100000001",
"name": "MyClass",
"type": "FunctionDeclaration",
"paramnames": []
},
"vars": { "": null }
},
"kind": "class",
"name": "MyClass",
"longname": "MyClass",
"scope": "global"
},
{
"comment": "",
"meta": {
"range": [ 116, 159 ],
"filename": "test.js",
"lineno": 5,
"path": "/jsdoctest",
"code": {
"id": "astnode100000012",
"name": "get",
"type": "FunctionExpression",
"value": "function"
}
},
"undocumented": true,
"name": "get",
"longname": "get",
"kind": "function",
"scope": "global"
},
{
"kind": "package",
"longname": "package:undefined",
"files": [ "/jsdoctest/test.js" ]
}
]
记录此类属性的最合适方法是什么?(也许是插件?
这样做:
/** @constructor */
function MyClass() {
/**
* @property {Number}
* @name MyClass#rnd
*/
Object.defineProperty(this, 'rnd', {
get : function () { return Math.random(); }
});
}
我使用过@property {type} name
语法,但从未在类中使用过。我通常做的是这样的:
/** @property {object} */
this.foo = {};
然后jsdoc使用this.foo
来计算名称(foo
)以及它属于哪个实体。似乎在类中使用@property {type} name
不起作用。
如果使用 @name
指定名称,则它知道要为其指定的名称以及它所属的位置。#
表示它是一个实例变量(而不是静态或内部变量)。有关详细信息,请参阅名称路径文档。
如果要在类外部声明成员,可以使用:
/**
* @constructor
*/
function MyClass() {};
/**
* Get the number of differed values in this map
*
* @member {number} count
* @memberOf module:moduleName.MyClass#
* @readonly
*/
Object.defineProperty(MyClass.prototype, 'rnd', {
get : function () { return Math.random(); }
});
相关文章:
- 如何在选项卡上定义属性'的主窗口对象
- 设置自动分隔符的自定义属性
- 与ng attr myCustomAttribute匹配的自定义属性指令
- 获取自定义属性的值
- 为Google闭包类定义属性的首选方式是什么
- 如何创建自定义属性以添加if.bind
- 动态更新Angular2指令中自定义属性的值
- 使用jQuery更改输入字段的自定义属性
- 在 Javascript 生成的列表中,如何将自定义属性添加到 标记
- 设置 HTML 自定义属性与在 ID 属性中存储信息
- 为什么在原型中定义属性被视为反模式
- 将对象作为参数传递后的未定义属性
- 是否可以在 Polymer 中的
节点上使用自定义属性以获得漂亮的 API - 为什么克隆节点排除自定义属性
- 将自定义属性添加到 vuejs 组件
- 使用原型对象向javascript对象添加自定义属性和方法的建议
- 正在设置自定义属性名称
- datalist获取选定的值和自定义属性(无事件)
- 在Javascript构造函数中定义属性的正确方式
- 如何使用javascript获取元素的自定义属性值