0

我看到了一种使用的风格

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

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

4

3 回答 3

2

using 的目的that是在构造函数的上下文中捕获this。当函数被调用时,this在不同的上下文中(我相信调用者),所以当 test() 被调用时,this它不会是你所期望的(除非你理解 JavaScript,在这种情况下它会是你所期望的)它是,但不是你想要的)。

于 2012-05-31T15:06:10.773 回答
1

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

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

于 2012-05-31T15:05:14.997 回答
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');
于 2012-05-31T15:06:08.740 回答