收藏
回答

什么时候用that,什么时候用this?

什么时候可以直接用this,什么时候需要添加一个var that=this,然后用that代替this?

回答关注问题邀请回答
收藏

3 个回答

  • H1HAO 🇨🇳
    H1HAO 🇨🇳
    2023-10-21

    这边建议阅读一下function方法/函数/箭头函数相关文档和说明

    简单理解一下:在小程序中this默认指向的是当前页面

    但是当现在this在某个方法中出现的时候,这里的this就指向了当前方法本身,这个时候你就需要重新把this定义给另一个字段that或者vm等等,这里的that就相当于页面的this,当然如果使用箭头函数就不会改变指向的问题

    比如 :

    setTimeout(function () {
          // this = undefined
    }, 2000)
    
    setTimeout(()=>{
        // this = this
    }, 2000)
    


    看文档,看文档,看文档

    开发遇到问题先网上搜索,基本开发遇见的问题网上百分之99都是有解决方案,刚开始接触这个行业在网上看见了解决方案不要直接去复制使用,先去了解一下 为什么会有这种问题,然后解决的原理是什么

    2023-10-21
    有用 1
    回复 1
    • 秋风抚荻
      秋风抚荻
      2023-10-21
      好的好的,谢谢谢谢
      2023-10-21
      回复
  • 跨商通
    跨商通
    2023-10-21

    不需要搞懂。

    先用this,弹错误了,就改that。弄几次就自然懂了。

    2023-10-21
    有用
    回复 1
    • 秋风抚荻
      秋风抚荻
      发表于移动端
      2023-10-23
      哈哈哈,好有道理
      2023-10-23
      回复
  • CRMEB
    CRMEB
    2023-10-21
    1. 当函数作为对象的方法被调用时,需要使用var that=this,然后用that代替this。这是因为在对象方法中,this通常指向调用该方法的对象,而不是全局对象(在浏览器中是window)。
    2. 当函数作为事件处理程序被调用时,也需要使用var that=this,然后用that代替this。这是因为在事件处理程序中,this通常指向触发事件的元素,而不是全局对象。
    3. 当函数作为回调函数被传递给其他函数时,需要使用var that=this,然后用that代替this。这是因为在回调函数中,this的值可能会发生变化,使用var that=this可以避免这个问题。


    2023-10-21
    有用
    回复 1
    • 秋风抚荻
      秋风抚荻
      发表于移动端
      2023-10-23
      好的好的,谢谢啦
      2023-10-23
      回复
登录 后发表内容