我经常在Javascript代码中找到这个作业:
var that = this;
这是一个例子:
function Shape(x, y) {
var that= this;
this.x = x;
this.y = y;
this.toString= function() {
return 'Shape at ' + that.x + ', ' + that.y;
};
}
你能解释为什么需要吗?
请记住,我非常熟悉PHP或Java,但不熟悉Javascript对象模型。
答案 0 :(得分:4)
它赋予内部函数访问调用Shape()方法的实例的权限。这种类型的变量访问称为“闭包”。有关详细信息,请参阅此处:https://developer.mozilla.org/en/JavaScript/Guide/Closures
答案 1 :(得分:4)
调用函数时设置值this
。
将that
设置为this
会保留该函数内定义的函数的值(因为它会获得this
的值,这取决于的> (内部函数)被调用。
答案 2 :(得分:0)
构造函数中的this
引用将从中构建的对象。但是,它内部的this
方法可能不再引用同一个对象。
因此,我们通过将this
保留在变量that
中来解决该问题。这样,我们仍然可以引用不使用this
变量创建的对象。
function Shape(x, y) {
var that= this;
this.toString= function() {
//"this" in here is not the same as "this" out there
//therefore to use the "this" out there, we preserve it in a variable
};
}
答案 3 :(得分:0)