首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js中that this

在JavaScript中,“this”是一个关键字,它代表函数运行时的上下文对象。然而,在某些情况下,特别是在回调函数或者事件处理器中,直接使用“this”可能会导致一些意想不到的结果,因为“this”的指向可能会改变。

为了解决这个问题,开发者经常使用“that”作为一个变量来保存“this”的引用。这样,即使在回调函数或者事件处理器中,“that”仍然指向原始的上下文对象。

例如:

代码语言:txt
复制
var obj = {
  name: 'John',
  describe: function () {
    var that = this; // 使用that保存this的引用
    setTimeout(function () {
      console.log(that.name); // 使用that来访问obj的name属性
    }, 100);
  }
};

obj.describe(); // 输出 "John"

在这个例子中,describe 方法中的 setTimeout 回调函数改变了 this 的指向。但是,由于我们在 describe 方法中使用 that 变量保存了 this 的引用,所以在 setTimeout 回调函数中,我们仍然可以通过 that 来访问 obj 对象的 name 属性。

然而,现代JavaScript提供了更优雅的方式来处理这个问题,那就是使用箭头函数。箭头函数不会创建自己的 this 上下文,而是从父作用域继承 this。因此,我们可以使用箭头函数来避免使用 that 变量。

例如:

代码语言:txt
复制
var obj = {
  name: 'John',
  describe: function () {
    setTimeout(() => {
      console.log(this.name); // 直接使用this来访问obj的name属性
    }, 100);
  }
};

obj.describe(); // 输出 "John"

在这个例子中,我们使用了箭头函数作为 setTimeout 的回调函数。由于箭头函数从父作用域继承了 this,所以我们可以直接在回调函数中使用 this 来访问 obj 对象的 name 属性,而无需使用 that 变量。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

共10个视频
尚硅谷JS模块化教程/视频/视频.zip/视频
腾讯云开发者课程
共43个视频
【新版】Java教程() 学习猿地
学习猿地
共33个视频
Python基础教程() 学习猿地
学习猿地
共35个视频
IDE快速配置Maven与Git
腾讯云开发者课程
共0个视频
动力节点-Spring框架源码解析视频教程-
动力节点Java培训
共20个视频
3.Android学科--Android核心技术阶段/15天安卓视频/视频/04_2数据存储().zip/04_2数据存储()
腾讯云开发者课程
共0个视频
2022全新MyBatis框架教程-循序渐进,深入浅出(
动力节点Java培训
共2个视频
共17个视频
编程术语古典史
江米小枣
共7个视频
Elastic 5 分钟教程
点火三周
共29个视频
【动力节点】JDBC核心技术精讲视频教程-jdbc基础教程
动力节点Java培训
共39个视频
动力节点-Spring框架源码解析视频教程-上
动力节点Java培训
共0个视频
动力节点-Spring框架源码解析视频教程-下
动力节点Java培训
共10个视频
资深架构师谈Java面试系列第一季
架构风清扬
共2个视频
腾讯金融云银行业数字原生技术论坛
腾讯金融云小助手
共22个视频
JavaWeb阶段入门教程-EL表达式+JSP【动力节点】
动力节点Java培训
共41个视频
【全新】RayData Web功能教程
RayData实验室
共10个视频
RayData Web进阶教程
RayData实验室
共50个视频
动力节点-JavaWeb经典项目教程-CRM项目【1】
动力节点Java培训
共50个视频
动力节点-JavaWeb经典项目教程-CRM项目【2】
动力节点Java培训

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券