我正在使用jQuery并编写以下代码:
function Test() {
this.value = '';
this.someFunction = function() {
// do something
}
this.loopFunction = function() {
var array = ['one', 'two', 'three'];
array.foreach(function() {
// calling someFunction not possible because 'this' is defined as value of loop
this.someFunction();
});
}
}
我的问题是我无法在循环中调用someFunction函数,因为关键字'this'现在被定义为循环的值。有没有办法在不失去这种“阶级”结构的情况下做到这一点?
答案 0 :(得分:1)
您可以使用原生bind
方法。例如:
array.foreach(function() {
// calling someFunction not possible because 'this' is defined as value of loop
this.someFunction();
}.bind(this));
答案 1 :(得分:0)
这是一个标准的关闭问题。使用local var保存以前的this
。
this.loopFunction = function() {
vat self = this;
var array = ['one', 'two', 'three'];
array.foreach(function() {
// calling someFunction not possible because 'this' is defined as value of loop
self.someFunction();
});
}
在某些版本的jQuery中,您可以使用bind
,但我发现这更容易阅读。