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
Post a Comment