Javascript 我的canvas子类如何处理window.resize事件?

Javascript 我的canvas子类如何处理window.resize事件?,javascript,events,html5-canvas,resize,this,Javascript,Events,Html5 Canvas,Resize,This,我有一个canvas包装器类,当它被调整到完全响应时,需要运行一些代码。当然,HTMLCanvasElement没有调整大小事件;只有窗户可以。我的代码如下所示: class CanvasThing { constructor(whichCanvas) { ... } handleResize() { this.recalculateStuff(); } } var foo = new CanvasThing(document.g

我有一个canvas包装器类,当它被调整到完全响应时,需要运行一些代码。当然,HTMLCanvasElement没有调整大小事件;只有窗户可以。我的代码如下所示:

class CanvasThing {
    constructor(whichCanvas) {
        ...
    }
    handleResize() {
        this.recalculateStuff();
    }
}

var foo = new CanvasThing(document.getElementFromID("bar"));
现在,我想把它放在我的类的构造函数中,使所有内容都是自包含的:

window.addEventListener("resize", this.handleResize, false);
但是当它调用handleResize时,
这个
被设置为窗口,而不是实例,因此
handleResize()
将不起作用,因为它无法访问类中的任何其他方法

好的,好的,在初始化
foo
之后,我将在全局级别执行此操作:

window.addEventListener("resize", foo.handleResize, false);
但是仍然
这个
指向窗口,因此没有简单的方法访问我的类的实例

当然,我可以通过让resize事件迭代页面上的所有类实例并触发它们的resize事件,将其硬连接到周围的代码中,但这似乎太不雅观了。将计时器设置为持续运行,以检查画布是否已调整大小,这似乎更为重要


有没有一种现代化的方法来处理这类事情,使我的包装器对象尽可能独立?

多亏了TMDesigner的评论。绑定是一条路:

class CanvasThing {
    constructor(whichCanvas) {
        this.boundResize = this.handleResize.bind(this);
        window.addEventListener("resize", this.boundResize, false);
        ...
    }
    handleResize() {
        this.recalculateStuff();
    }
}

这使包装器能够完全独立且优雅。

您是否尝试过使用.bind(This)并将函数传递给侦听器?我没有。。。真管用!我从来没用过。绑定过。谢谢你的提示!很乐意帮忙,托比鲁斯。