js中this指向

本文探讨JavaScript中的this关键字,强调其在函数调用时而非声明时确定指向的特点。无论函数如何定义或在哪里定义,this的值取决于函数的实际调用方式。在函数内部,this的指向不是静态的,尤其需要注意箭头函数的特殊情况。
摘要由CSDN通过智能技术生成

this和作用域不一样,作用域是声明的时候就定下来了,this是在调用的时候才确定下来
this 是一个使用在作用域里面的关键字

  • 不管函数怎么定义, 不管函数在哪定义, 只看函数的调用方式

  • 函数调用: 不计算箭头函数

      1. 全局调用(直接调用)
        => 函数名()   
      2. 对象调用
        => 对象名.函数名()
      3. 事件处理函数
        => 元素.onclick = function () {}
        => 元素.addEventListener('click', function () {})
      4. 定时器处理函数
        => setTimeout(function () {}, 时间)
        => setInterval(function () {}, 时间)
      5. 自调用函数(自执行函数)
        => (function () {})()
      6. 构造函数
        => new 构造函数名()
        
      以上六种方式中不包含箭头函数, 如果你有用箭头函数书写的函数
      => 那么按照箭头函数的规则来确定 this 指向
    
  • 函数内部的 this 指向

      1. 全局调用(直接调用)
       => this 指向 window
     2. 对象调用
       => 点前面是谁就是谁
       => 对象名.函数名()  这里面的 this 就是点前面的那个 对象
         -> 比如你写 obj.fn()  fn 函数里面的 this 就是 obj
         -> 比如你写 aaa.fn()  fn 函数里面的 this 就是 aaa
     3. 事件处理函数调用
       => this 指向 事件源
       => 事件源: 谁身上的事件
         -> 比如你写 div.onclick = function () {}, 这里面的 this 就是 div
         -> 比如你写 ul.onclick = function () {}, 这里面的 this 就是 ul
     4. 定时器处理函数
       => this 指向 window
     5. 自调用函数(自执行函数)
       => this 指向 window
     6. 构造函数调用
       => this 指向当前实例
       => 就是你写 const xxx = new 构造函数()
         -> 前面的 xxx 是什么, 构造函数体内的 this 就是什么
     7. 箭头函数
       => 箭头函数里面没有 this, 箭头函数的 this 是 context(上下文)
       => 箭头函数定义的外部作用域的 this 就是箭头函数内部的 this
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值