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