这和那之间有什么区别

时间:2014-04-14 20:39:14

标签: javascript

我想知道并理解这个和那个之间的不同,以及当我必须使用它时。 我准备了很多帖子和许多教程,但我还不明白

这是我的班级

function Container(param) {

    function dec() {
        if (secret > 0) {
            secret -= 1;
            return true;
        } else {
            return false;
        }
    }

    this.member = param;
    var secret = 3;
    var that = this;

    this.service = function () {
        console.log(this.member); // foo
        console.log(that.member); // foo
        return dec() ? that.member : null;
    };
}

var myContainer = new Container('foo');
myContainer.service()

致电myContainer.service()将返回' abc'它被称为前三次。 之后,它将返回null

为什么我要做var that = this ??

1 个答案:

答案 0 :(得分:5)

this是一个变量,它获取当前函数的上下文(取决于它的调用方式)。

that没有特别的意义。它只是一个赋值的变量。

在这种特殊情况下,that被赋予thisContainer运行时所具有的值,并在service函数内使用(但仍具有作为Container调用的上下文的值。由于service是一个不同的函数,因此this的值可能不同。


通常,对于此特定函数设计,Container将被称为构造函数(因此this将是Container的实例对象)然后在该实例对象的上下文中调用service,这样您就可以使用this而不是通过that传递值。我不知道为什么该代码的作者选择在这里使用that

相关问题