事件函数内部,this指向谁?(谁调用该函数,this指向谁)


1.事件函数内部的this:指向绑定事件的DOM对象
2.普通函数内部this:指向window对象
3.定时器函数内部this:指向window对象
4.对象的方法内部this:指向对象本身
“谁调用,this指向谁”

箭头函数内部this指向问题

1.看箭头函数 定义 在什么 位置 ,this与箭头函数定义位置有关
如果在局部作用域,箭头函数的this指向局部作用域所指向的内容
如果在全局作用域,箭头函数的this指向window

  1. let fun3=()=>{
  2. console.log(this);//指向window
  3. }
  4. fun3()
  5. // (2)
  6. let obj={
  7. uname:'jon',
  8. age:18,
  9. eat:function(){//eat函数是个局部作用域
  10. console.log(this);//obj
  11. return (food)=>{
  12. console.log(this);//obj
  13. }
  14. }
  15. }
  16. obj.eat()
  17. console.log(obj.eat());
  18. let fn=obj.eat()
  19. fn()
  20. // (3)
  21. // obj2只是一个对象,不能形成作用域,所以obj2就在全局作用域中
  22. // 所以内部函数也处在全局作用域中,
  23. let obj2={
  24. uname:'jon',
  25. age:18,
  26. speak:()=>{
  27. console.log(this);//window
  28. }
  29. }
  30. // (4)
  31. btn.onclick=function(){//函数是局部作用域,这个函数指向btn
  32. setTimeout(()=>{
  33. console.log(this);//指向btn
  34. },1000)
  35. }