如何在 WebStorm 的回调函数中记录 'this' 实例?
How can I document a 'this' instance inside a callback function in WebStorm?
有这个代码:
function Element() {
this.name = "yay";
}
Element.prototype.extend = function(object) {
if (object instanceof Object) {
for (var n in object) {
if (object.hasOwnProperty(n)) {
this[n] = object[n];
}
}
}
};
var el = new Element();
el.extend({
update: function() {
console.log(this.name);
}
});
我想让 WebStorm 知道 update()
this
是 Element
的一个实例,但我真的不知道该怎么做。
我达到的最大值是:
el.extend({
/**
* @this Element
*/
update: function() {
console.log(this.name);
}
});
但我不想在每个 extend()
都这样做。
还发现了这个:
/**
* @typedef {Object} FunctionExtend
*/
/**
* @param {FunctionExtend} object
*/
Element.prototype.extend = function(object) {
[...]
但我被困在:
- 如何声明
FunctionExtend
具有未定义数量的参数。
- 如何在不知道参数名称的情况下判断每个
@parameter
将是一个回调。
- 如何判断回调的
@this
是什么。
开始时扩展原型通常是一个 Bad Idea™,并且它不能很好地与 JSDoc 等编写时文档工具一起使用。
您可能别无选择,只能单独记录每个函数。
有这个代码:
function Element() {
this.name = "yay";
}
Element.prototype.extend = function(object) {
if (object instanceof Object) {
for (var n in object) {
if (object.hasOwnProperty(n)) {
this[n] = object[n];
}
}
}
};
var el = new Element();
el.extend({
update: function() {
console.log(this.name);
}
});
我想让 WebStorm 知道 update()
this
是 Element
的一个实例,但我真的不知道该怎么做。
我达到的最大值是:
el.extend({
/**
* @this Element
*/
update: function() {
console.log(this.name);
}
});
但我不想在每个 extend()
都这样做。
还发现了这个:
/**
* @typedef {Object} FunctionExtend
*/
/**
* @param {FunctionExtend} object
*/
Element.prototype.extend = function(object) {
[...]
但我被困在:
- 如何声明
FunctionExtend
具有未定义数量的参数。 - 如何在不知道参数名称的情况下判断每个
@parameter
将是一个回调。 - 如何判断回调的
@this
是什么。
开始时扩展原型通常是一个 Bad Idea™,并且它不能很好地与 JSDoc 等编写时文档工具一起使用。
您可能别无选择,只能单独记录每个函数。