JetBrains有一篇关于JSDoc注释的老博文,解释了如何通知IDE变量类型http://blog.jetbrains.com/webide/2012/10/validating-javascript-code-with-jsdoc-types-annotations/。
但是,我仍然无法找到一种方法来告诉IDE#34;这个"许多jQuery回调中的值是HTMLElements。例如:/**
* Enable input
* @returns {SomeConstructor}
*/
SomeConstructor.prototype.enableInput = function(){
this.$markup.find('input').each(function(){
this.disabled = false;
});
return this;
};
上面的例子仍然会在IDE中产生警告 - "可能无效使用此"。
我如何指定"这个"是指一个HTMLElement对象?
编辑:
在查看JSDoc文档后,我找到了@this注释http://usejsdoc.org/tags-this.html。 @this将允许你指定一个"这个"整个函数的值,但在发布的示例中,IDE会认为它返回的是HTMLElement而不是SomeConstructor。
答案 0 :(得分:1)
@ de1mar在评论中钉了它。诀窍是在关闭之前放置/ ** @ this {HTMLElement}。所以,例如:
/**
* Enable input
* @returns {SomeConstructor}
*/
SomeConstructor.prototype.enableInput = function(){
this.$markup.find('input').each(/**@this {HTMLElement}*/function(){
this.disabled = false;
});
return this;
};
或者,
SomeConstructor.prototype.listenForCheck = function(){
this.$markup.find('input[type=checkbox]').on('click', /**@this {HTMLInputElement}*/ function(){
//Do something
});
};
对于那些在jetbrains IDE中编写jQuery的人来说应该是有用的。谢谢@ del1mar!