this 指向问题

2020-09-29  本文已影响0人  fz_log

认识function中的this在不同环境下的指向

  1. 全局:浏览器环境中 指向window,node环境:module.exports 指向的是导出对象。
  2. 事件调用环境:谁触发事件,this指向的就是谁。
  3. 函数内部:
    • 1)this的最终指向是调用该函数的对象。
    • 2)被多层对象包含的函数调用,this指向的是调用该函数而且是距离函数最近的外层对象。
    • 3)对象中的函数赋值给一个变量,然后调用,同 1)。
  4. 构造函数:
    使用:var ABC= new fn();
    • new的作用:
      • 1)调用函数
      • 2)自动创建一个对象
      • 3)把创建出来的对象和this绑定
      • 4)如果构造函数没有返回值,隐式返回this
    • 构造函数有return情况:
      • 1)return 对象,this指向对象
      • 2)return 不是对象,this保持和无return规则一样
      • 3)return null,同2)
  5. 箭头函数 this在定义的时候就已经形成(对象不会形成独立的作用域)
    箭头函数是没有this和arguments,在箭头函数调用this是定义的上一层作用域的this
  6. 改变普通函数的this指向
- call(this,a,b,c)  //this是要更改的this指向,a,b,c是参数
- apply(this,[a,b,c])
- bind(this,a,b,c) () //bind默认是没有执行的
上一篇 下一篇

猜你喜欢

热点阅读