Access values of object from within a javascript closure -


i can't how access value, code:

function filters() {     this.filters = ["filter_1", "filter_2", "filter_3"];     this.somedata = "test";     this.draw = draw;     function draw(){         for(var i=0; i<this.filters.length;i++)         {             var filter = this.filters[i];             $("#" + filter).click(function(){                 dosomething();             });         }     }     function dosomething(){         alert(this.somedata);     } } 

i aware of fact since dosomething() called within closure, this. refer jquery object being worked on. how go being able use somedata object in function/closure ? can't seem figure out.
:)

no, this inside dosomething global object. need keep reference this in separate variable:

function filters() {     var = this; // reference     this.filters = ["filter_1", "filter_2", "filter_3"];     this.somedata = "test";     this.draw = draw;     function draw(){         for(var i=0; i<this.filters.length;i++)         {             var filter = this.filters[i];             $("#" + filter).click(function(){                 dosomething();             });         }     }     function dosomething(){         alert(that.somedata);     } } 

unrelated problem: pass reference dosomething event listener, instead of wrapping in function:

$("#" + filter).click(dosomething); 

Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -