首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Javascript中访问事件处理程序中的类成员变量

在Javascript中访问事件处理程序中的类成员变量
EN

Stack Overflow用户
提问于 2010-06-19 23:23:43
回答 2查看 11.9K关注 0票数 28

关于从该类使用的事件处理程序内部访问Javascript类成员变量的正确方式,我有一个简短的问题。例如:

代码语言:javascript
复制
function Map() {
    this.x = 0;
    this.y = 0;

    $("body").mousemove( function(event) {
        this.x = event.pageX;     // Is not able to access Map's member variable "x"
        this.y = event.pageY;     // Is not able to access Map's member variable "y"
    });
}

事件处理程序中的"this.x“尝试影响触发事件的元素的"x”成员变量,而不是更改"Map“类的成员变量。从事件处理程序中访问"Map“类的成员变量的正确方法是什么?

任何帮助都是非常感谢的--我一直在抓挠我的头。

干杯,查莉

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-19 23:25:30

由于this在事件上下文中发生变化(通常指向global ),因此您需要在事件外部存储对自己的引用:

代码语言:javascript
复制
function Map() {
    this.x = 0;
    this.y = 0;
    var _self = this;
    $("body").mousemove( function(event) {
        _self.x = event.pageX;     // Is now able to access Map's member variable "x"
        _self.y = event.pageY;     // Is now able to access Map's member variable "y"
    });
}
票数 48
EN

Stack Overflow用户

发布于 2013-09-01 07:49:35

您还可以使用JQuery.proxy创建一个带有上下文的代理函数。然后,您可以将代理绑定到事件。

下面是一个示例:

代码语言:javascript
复制
var init_handler  =  $.proxy(this.init, this);
$('#page_id').bind('pageinit', init_handler);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3076010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档