声明 var that = this; 背后的原因是啥?在javascript中? [复制]

Posted

技术标签:

【中文标题】声明 var that = this; 背后的原因是啥?在javascript中? [复制]【英文标题】:What is the reasoning behind declaring var that = this; in javascript? [duplicate]声明 var that = this; 背后的原因是什么?在javascript中? [复制] 【发布时间】:2013-05-23 13:43:38 【问题描述】:

我在我正在查看的新代码库中多次遇到这种情况,想知道它背后是否有任何适当的推理?

【问题讨论】:

相关:***.com/questions/7234282/… 获取代码,并尝试用this 替换使用的that,您会发现它可能不起作用。 ***.com/a/4886696/1651233 谢谢大家。不知道为什么之前提出的问题没有出现在我最初搜索此问题的答案中:/ 【参考方案1】:

您可以使用var that = this; 来保持对当前this 对象的引用,而稍后this 将指向其他对象。

示例 (taken from here):

$('#element').click(function()
    // this is a reference to the element clicked on

    var that = this;

    $('.elements').each(function()
        // this is a reference to the current element in the loop
        // that is still a reference to the element clicked on
    );
);

【讨论】:

和我的回答一样,但举个例子,玩得很好:)【参考方案2】:

有时thisjavascript 中的含义会根据作用域而变化。构造函数内部的this 与函数内部的this 不同。这是关于它的good article。

【讨论】:

【参考方案3】:

如果您想在特定函数调用范围之外/内部访问“this”,其中“this”可能已更改。只是我能想到的一个例子。

【讨论】:

以上是关于声明 var that = this; 背后的原因是啥?在javascript中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

javascript中var that=this

js常见的var that = this的用法

var that = this 小坑记

Javascript中var that=this;是什么意思(转)

var that = this - 你能帮我理解吗[重复]

在javascript中为啥使用“ var that = this” [重复]