var that = this - 你能帮我理解吗?

时间:2012-05-30 21:07:31

标签: javascript

  

可能重复:
  What does var that = this; mean in javascript?

我经常在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对象模型。

4 个答案:

答案 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)

  • Shape是一个JavaScript类。它有成员toString()和私有属性this.x
  • 这是指当前的类实例。
  • 为了让toString()意识到它在'当前类实例'下运行,你可以指定= this。因为变量'that'可以在toString()的范围内访问。这被称为“我”操作员。