我想知道并理解这个和那个之间的不同,以及当我必须使用它时。 我准备了很多帖子和许多教程,但我还不明白
这是我的班级
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
??
答案 0 :(得分:5)
this
是一个变量,它获取当前函数的上下文(取决于它的调用方式)。
that
没有特别的意义。它只是一个赋值的变量。
在这种特殊情况下,that
被赋予this
在Container
运行时所具有的值,并在service
函数内使用(但仍具有作为Container
调用的上下文的值。由于service
是一个不同的函数,因此this
的值可能不同。
通常,对于此特定函数设计,Container
将被称为构造函数(因此this
将是Container
的实例对象)然后在该实例对象的上下文中调用service
,这样您就可以使用this
而不是通过that
传递值。我不知道为什么该代码的作者选择在这里使用that
。