在面向对象的Javascript中,将对象成员方法传递给事件处理程序

In Object-Oriented Javascript pass object member method to event handler

本文关键字:事件处理 程序 成员方法 对象 Javascript 面向对象的      更新时间:2023-09-26

在Javascript中,我定义了一个这样的对象:

function myObject() {
    this.x = 5;
    window.addEventListener("resize", this.resizeHandler);
}
myObject.prototype.doSomething = function() {
    alert(this.x);
}
myObject.prototype.resizeHandler = function() {
    this.doSomething();   // Here occurs error.
}
var obj = new myObject();

然而,我遇到了错误消息:

"未捕获的类型错误:undefined不是函数;。

问题是";为什么"解释一下就好了!

您需要确保this的上下文是正确的。。。

function myObject() {
    this.x = 5;
    window.addEventListener("resize", this.resizeHandler.bind(this));
}
myObject.prototype.doSomething = function() {
    alert(this.x);
}
myObject.prototype.resizeHandler = function() {
    this.doSomething();   // Here occurs error.
}

这里使用.bind(this)

this更改了用作事件处理程序的函数。