var test = function() {
var that = this;
this.show() {
that.***;
}
}
我很奇怪,为什么在功能使用that
风格?
var test = function() {
var that = this;
this.show() {
that.***;
}
}
我很奇怪,为什么在功能使用that
风格?
使用that
的目的是捕获this
在其中构建了功能的上下文。当函数被调用时,this
在不同的上下文中(我相信的调用者),所以当调用test()时,this
不会是你期望的(除非你理解JavaScript,在这种情况下,它将是什么你期望它是,但不是你想要它)。
捕获正确的值this
。 JS的this
语义有点...时髦,国际海事组织。
什么是“正确”取决于你实际需要什么,但this
评估晚。换句话说,this
的运行时间值可能与其在函数定义时的值不同。通过在定义时间捕获它,您可以确保它是您所需要的。
因为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');
它只是一个变量名,可以用来保留'this'的值 – Jashwant