Accessing class member variables inside an event handler in Javascript

后端 未结 3 655
执笔经年
执笔经年 2020-12-24 07:10

I have a quick question regarding the proper way to access Javascript class member variables from inside of an event handler that class uses. For example:

fu         


        
相关标签:
3条回答
  • 2020-12-24 08:00

    You can also use JQuery.proxy, to create a proxy function with its context. You can than bind the proxy to events.

    Here is an example:

    var init_handler  =  $.proxy(this.init, this);
    $('#page_id').bind('pageinit', init_handler);
    
    0 讨论(0)
  • 2020-12-24 08:13

    Since this changes in an event context (points to global usually), you need to store a reference to yourself outside of the event:

    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"
        });
    }
    
    0 讨论(0)
  • 2020-12-24 08:16

    The solution that Matt gave it probably the way to go.

    Just thought I'd point out that you can pass data via the event object like this:

    function Map() {
        this.x = 0;
        this.y = 0;
    
    // Pass object with data-------------v
        $("body").bind('mousemove', {ths: this}, function(event) {
                // access this via event.data
            event.data.ths.x = event.pageX;
            event.data.ths.y = event.pageY;     
        });
    }
    

    This is just for the info. It is really not a practical application. Matt's reference to a local variable makes more sense.

    0 讨论(0)
提交回复
热议问题