如何在 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() thisElement 的一个实例,但我真的不知道该怎么做。

我达到的最大值是:

el.extend({
    /**
      * @this Element
      */
    update: function() {
        console.log(this.name);
    }
});

但我不想在每个 extend() 都这样做。

还发现了这个:

/**
 * @typedef {Object} FunctionExtend
 */
/**
 * @param {FunctionExtend} object
 */
Element.prototype.extend = function(object) {
    [...]

但我被困在:

开始时扩展原型通常是一个 Bad Idea™,并且它不能很好地与 JSDoc 等编写时文档工具一起使用。

您可能别无选择,只能单独记录每个函数。