如何使用 Userscript 停止执行函数

How to stop execution for function with Userscript

我想为其编写用户脚本的网站有类似的内容:

p.Stream = p.Class.extend({
         .
         .
         .
_processResponse: function(data) {
    if (!data.items || !data.items.length) {
        return null;
    }
    this.reached.start = data.atStart || this.reached.start;
    this.reached.end = data.atEnd || this.reached.end;
    var oldestId, newestId;
    if (this.options.promoted) {
        data.items.sort(p.Stream.sortByPromoted);
        oldestId = data.items[data.items.length - 1].promoted;
        newestId = data.items[0].promoted;
    } else {
        data.items.sort(p.Stream.sortById);
        oldestId = data.items[data.items.length - 1].id;
        newestId = data.items[0].id;
    }
    var position = (oldestId < this._oldestId) ? p.Stream.POSITION.APPEND : p.Stream.POSITION.PREPEND;
    this._oldestId = Math.min(this._oldestId, oldestId);
    this._newestId = Math.max(this._newestId, newestId);
    var prev = null;
    var itemVotes = p.user.voteCache.votes.items;
    for (var i = 0; i < data.items.length; i++) {
        var item = data.items[i];
        item.thumb = CONFIG.PATH.THUMBS + item.thumb;
        item.image = CONFIG.PATH.IMAGES + item.id;

        item.fullsize = item.fullsize ? CONFIG.PATH.FULLSIZE + item.fullsize : null;
        item.vote = itemVotes[item.id] || 0;
        this.items[item.id] = item;
    }
    return position;
}
});

我想操纵 _processResponse,使 item.image 指向另一个源。用户脚本可能吗?我尝试覆盖某些网站上所述的功能,但效果不如预期。我只想覆盖这个功能,除此之外别无其他。

据我所知,最简单和最灵活的方法是将 _processResponse 包装在一个函数中,该函数在调用原始函数后进一步对 data 进行操作:

var oldfunc = p.Stream.prototype._processResponse;
p.Stream.prototype._processResponse = function(data) {
    var ret = oldfunc.apply(this, arguments);
    if(data.items && data.items.length)
    {
        for(var i = 0, len = data.items.length; i < len; ++i)
        {
            data.items[i].image = 'https://example.com/a.png'; // or whatever
        }
    }
    return ret;
}