Javascript 这个和那个有什么区别
我想知道和理解这个和那个之间的区别,以及何时我必须使用它。 我准备了很多文章和教程,但我还不明白 这是我的课Javascript 这个和那个有什么区别,javascript,Javascript,我想知道和理解这个和那个之间的区别,以及何时我必须使用它。 我准备了很多文章和教程,但我还不明白 这是我的课 function Container(param) { function dec() { if (secret > 0) { secret -= 1; return true; } else { return false; } } th
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;
};
}
新的
调用myContainer.service()将在调用前三次返回“abc”。
之后,它将返回null
为什么我必须执行
var that=this
?this
是一个获取当前函数上下文的变量(这取决于调用它的方式)
没有特殊意义。它只是一个已经赋值的变量
在这种特殊情况下,即
被分配此
在容器
运行时具有的值,并在服务
功能中使用(但仍具有调用容器
的上下文值。由于服务
是一个不同的函数,因此其this
的值可能不同
通常,对于这种特定的函数设计,Container
将作为构造函数调用(因此this
将是Container
的实例对象)然后在该实例对象的上下文中调用服务
,这样您就可以使用this
而不是通过that
传递值。我不知道为什么该代码的作者选择在这里使用that
。您是否在没有that
的情况下尝试过它以查看发生了什么?可能是个好方法了解发生了什么的方法。我不认为在您的示例中需要那样的。请尝试var s=myContainer.service;s()
看看有/没有这个会发生什么。@CoderDennis是的,它可以解决类似的问题-但是为什么我必须做var=this;?@monkeyUser:你不必。如果你不想-你可以不定义那个变量。@monkeyUser-否则那个就没有值了。你有明确的exa吗什么?
var myContainer = new Container('foo');
myContainer.service()