在循环中调用类函数

时间:2015-01-13 12:37:38

标签: javascript jquery function class foreach

我正在使用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'现在被定义为循环的值。有没有办法在不失去这种“阶级”结构的情况下做到这一点?

2 个答案:

答案 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,但我发现这更容易阅读。