我无法获取如何访问该值,这是我的代码:
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);
}
}
我知道自从doSomething()
从闭包内调用this.
之后,someData
将引用正在处理的JQuery对象。那么如何才能在该函数/闭包中使用我的对象中的{{1}}?似乎无法弄明白。
感谢您的帮助:)
答案 0 :(得分:1)
不,this
内的doSomething
将成为全局对象。您需要在单独的变量中保留对this
的引用:
function Filters()
{
var that = this; // reference to this
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);
}
}
与您的问题无关:您还可以将doSomething
的引用作为事件侦听器传递,而不是将其包装在另一个函数中:
$("#" + filter).click(doSomething);