[英]Access values of object from within a javascript closure
我无法获取该值,这是我的代码:
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.
是事实this.
将引用正在处理的JQuery对象。 那么,如何在该函数/闭包中使用对象中的someData
呢? 似乎无法弄清楚。
感谢帮助 :)
不, doSomething
内部的this
将是全局对象。 您需要在单独的变量中保留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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.