”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 为什么使用“var that = this;”在 JavaScript 中?

为什么使用“var that = this;”在 JavaScript 中?

发布于2024-12-23
浏览:142

Why Use

理解“var that = this;”的目的在 JavaScript

使用 JavaScript 时,您可能会遇到包含语句“var that = this;”的代码片段。此构造在保留嵌套函数中“this”的上下文方面发挥着至关重要的作用,特别是在事件处理程序中。

在 JavaScript 中,“this”关键字表示当前上下文或拥有其所使用代码的对象但是,当一个函数在另一个函数内调用时,“this”的值会发生变化。这可能会导致意外的行为,特别是在事件处理程序驻留在回调中的事件驱动代码中。

将“this”分配给“that”的目的是在对象因丢失而丢失之前捕获该对象的当前上下文。范围的变化。通过将“this”别名为“that”,您可以确保即使在嵌套函数中也可以访问“this”的原始值。

考虑以下示例:

$('#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
    });
});

在此代码中,事件处理函数可以访问通过“this”关键字单击的元素。但是,在嵌套函数 (each()) 中,“this”的值引用循环中的当前元素。通过在外部函数中将“this”捕获为“that”,您仍然可以访问最初单击的元素。

为了提高可读性,建议使用“that”以外的别名。在上面的示例中,像“clickedEl”这样更具描述性的别名将使变量所指的内容更加清晰。

总而言之,“var that = this;”是 JavaScript 中一种常用技术,用于在不同范围内保留“this”的值。即使调用嵌套函数,它也确保维持对象的原始上下文。

最新教程 更多>
  • 将PHP数组转换为JavaScript数组的JSON方法
    将PHP数组转换为JavaScript数组的JSON方法
    将php array转换为javaScript 当提供的php和javascript数组无直接相关时,php提供JSON_ENCODE()函数以将数组转换为JSON(JOSH(Javascript Object Object)格式)中的JSON(json)中的Javascript代码。 $ p...
    编程 发布于2025-05-02
  • 用户本地时间格式及时区偏移显示指南
    用户本地时间格式及时区偏移显示指南
    在用户的语言环境格式中显示日期/时间,并使用时间偏移在向最终用户展示日期和时间时,以其localzone and格式显示它们至关重要。这确保了不同地理位置的清晰度和无缝用户体验。以下是使用JavaScript实现此目的的方法。方法:推荐方法是处理客户端的Javascript中的日期/时间格式化和时...
    编程 发布于2025-05-02
  • 在Ubuntu/linux上安装mysql-python时,如何修复\“ mysql_config \”错误?
    在Ubuntu/linux上安装mysql-python时,如何修复\“ mysql_config \”错误?
    mysql-python安装错误:“ mysql_config找不到”“ 由于缺少MySQL开发库而出现此错误。解决此问题,建议在Ubuntu上使用该分发的存储库。使用以下命令安装Python-MysqldB: sudo apt-get安装python-mysqldb sudo pip in...
    编程 发布于2025-05-02
  • 解决Spring Security 4.1及以上版本CORS问题指南
    解决Spring Security 4.1及以上版本CORS问题指南
    弹簧安全性cors filter:故障排除常见问题 在将Spring Security集成到现有项目中时,您可能会遇到与CORS相关的错误,如果像“访问Control-allo-allow-Origin”之类的标头,则无法设置在响应中。为了解决此问题,您可以实现自定义过滤器,例如代码段中的MyFi...
    编程 发布于2025-05-02
  • Java字符串非空且非null的有效检查方法
    Java字符串非空且非null的有效检查方法
    检查字符串是否不是null而不是空的 if(str!= null && str.isementy())二手: if(str!= null && str.length()== 0) option 3:trim()。isement(Isement() trim whitespace whitesp...
    编程 发布于2025-05-02
  • 如何使用替换指令在GO MOD中解析模块路径差异?
    如何使用替换指令在GO MOD中解析模块路径差异?
    在使用GO MOD时,在GO MOD 中克服模块路径差异时,可能会遇到冲突,其中3个Party Package将另一个PAXPANCE带有导入式套件之间的另一个软件包,并在导入式套件之间导入另一个软件包。如回声消息所证明的那样: go.etcd.io/bbolt [&&&&&&&&&&&&&&&&...
    编程 发布于2025-05-02
  • 反射动态实现Go接口用于RPC方法探索
    反射动态实现Go接口用于RPC方法探索
    在GO 使用反射来实现定义RPC式方法的界面。例如,考虑一个接口,例如:键入myService接口{ 登录(用户名,密码字符串)(sessionId int,错误错误) helloworld(sessionid int)(hi String,错误错误) } 替代方案而不是依靠反射...
    编程 发布于2025-05-02
  • 在Go语言中如何简洁定义10的幂常量
    在Go语言中如何简洁定义10的幂常量
    在GO 利用浮点线文字一种简洁的方式是使用浮点文字,该方法是使用floingpoint protals。写作1E3比写作1000更有效。这是一个示例(67个没有空间的字符):的文字用于未构图的整数常数,我们可以将1000用于KB,并用KB将随后的常量乘以KB,如下所示(77个没有空格的字符):,作...
    编程 发布于2025-05-02
  • CSS网格容器中的子网格如何定位孙元素?
    CSS网格容器中的子网格如何定位孙元素?
    网格subgrids:将孙子放置在网格容器中的方法 display:subgrid and grid sashitance [us grid and grid senasonitance drespligification,display:subgrid允许一个网格项目成为subgrid。这种...
    编程 发布于2025-05-02
  • 如何在其容器中为DIV创建平滑的左右CSS动画?
    如何在其容器中为DIV创建平滑的左右CSS动画?
    通用CSS动画,用于左右运动 ,我们将探索创建一个通用的CSS动画,以向左和右移动DIV,从而到达其容器的边缘。该动画可以应用于具有绝对定位的任何div,无论其未知长度如何。问题:使用左直接导致瞬时消失 更加流畅的解决方案:混合转换和左 [并实现平稳的,线性的运动,我们介绍了线性的转换。这...
    编程 发布于2025-05-02
  • 如何将来自三个MySQL表的数据组合到新表中?
    如何将来自三个MySQL表的数据组合到新表中?
    mysql:从三个表和列的新表创建新表 答案:为了实现这一目标,您可以利用一个3-way Join。 选择p。*,d.content作为年龄 来自人为p的人 加入d.person_id = p.id上的d的详细信息 加入T.Id = d.detail_id的分类法 其中t.taxonomy =...
    编程 发布于2025-05-02
  • Go语言中空接口(interface{})的使用场景与注意事项
    Go语言中空接口(interface{})的使用场景与注意事项
    go中的空接口是无方法的接口,代表任何值,在处理未知数据类型时应使用。 1)它们为通用数据处理提供了灵活性,如FMT软件包所示。 2)由于潜在的类型安全性和性能问题的潜在丢失而谨慎使用它们,并使用逗号ok iDiom安全地主张。 在进行Go编程的世界时,您将不可避免地会遇到空的接口的概念,即插入[...
    编程 发布于2025-05-02
  • 如何实时捕获和流媒体以进行聊天机器人命令执行?
    如何实时捕获和流媒体以进行聊天机器人命令执行?
    在开发能够执行命令的chatbots的领域中,实时从命令执行实时捕获Stdout,一个常见的需求是能够检索和显示标准输出(stdout)在cath cath cant cant cant cant cant cant cant cant interfaces in Chate cant inter...
    编程 发布于2025-05-02
  • 如何使用Python的请求和假用户代理绕过网站块?
    如何使用Python的请求和假用户代理绕过网站块?
    如何使用Python的请求模拟浏览器行为,以及伪造的用户代理提供了一个用户 - 代理标头一个有效方法是提供有效的用户式header,以提供有效的用户 - 设置,该标题可以通过browser和Acterner Systems the equestersystermery和操作系统。通过模仿像Chro...
    编程 发布于2025-05-02
  • 如何使用Python理解有效地创建字典?
    如何使用Python理解有效地创建字典?
    在python中,词典综合提供了一种生成新词典的简洁方法。尽管它们与列表综合相似,但存在一些显着差异。与问题所暗示的不同,您无法为钥匙创建字典理解。您必须明确指定键和值。 For example:d = {n: n**2 for n in range(5)}This creates a dicti...
    编程 发布于2025-05-02

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3