在循环中调用 class 函数
Calling class function in loop
我正在使用 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' 现在被定义为循环的值。有没有办法在不丢失这个 'class' 结构的情况下做到这一点?
您可以使用本机 bind
方法。例如:
array.foreach(function() {
// calling someFunction not possible because 'this' is defined as value of loop
this.someFunction();
}.bind(this));
这是一个标准的关闭问题。使用本地变量保存之前的 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
,但我发现这更易于阅读。
我正在使用 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' 现在被定义为循环的值。有没有办法在不丢失这个 'class' 结构的情况下做到这一点?
您可以使用本机 bind
方法。例如:
array.foreach(function() {
// calling someFunction not possible because 'this' is defined as value of loop
this.someFunction();
}.bind(this));
这是一个标准的关闭问题。使用本地变量保存之前的 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
,但我发现这更易于阅读。