在javascript函数中使用它的目的是什么?

时间:2012-05-31 15:03:38

标签: javascript

我看到了一种使用

的风格
var test = function() {
    var that = this;
    this.show() {
        that.***;
    }
}

我想知道为什么在函数中使用that

3 个答案:

答案 0 :(得分:2)

使用that的目的是在构造函数的上下文中捕获this。当调用该函数时,this处于不同的上下文中(我相信调用者),因此当调用test()时,this将不是您期望的那样(除非您理解JavaScript ,在这种情况下,它将是你所期望的,但不是你想要的那样。)

答案 1 :(得分:1)

捕获this的正确值。 JS的this语义有点......时髦,IMO。

什么是“正确”取决于您实际需要的内容,但this评估较晚。换句话说,运行时this的值可能与函数定义时的值不同。通过在定义时捕获它,您可以确保它是您需要的。

答案 2 :(得分:0)

因为this关键字在javascript中的函数之间不是持久的。如果使用that = this将其保存在局部变量中,则可以从本地函数中访问它,无论您应用哪种上下文。

var test = function() {
    console.log(this); // foo
    var that = this;
    var inner = function() {
        console.log(this); // bar
        console.log(that); // foo
    }
    inner.call('bar');
};

test.call('foo');