深入剖析JavaScript中this的指向,简单方式正确辨别this指向

深入剖析JavaScript中this的指向,简单方式正确辨别this指向

  1. 直接调用的普通函数,this一定是window,不管函数是放在哪里,因为没有谁调用就是window调用的,而window调用函数可以省略window,直接调用,所以是指向window的
  2. 通过对象调用的函数,只要记住谁调用了函数,this就指向谁
  3. 通过new的方式调用的函数,this被永远绑定在了对象上,不会被任何方式改变this,一直指向实例对象
  4. 若是箭头函数其内部其实是没有this的,箭头函数中的this只取决于包裹箭头函数的第一个普通函数的this,并且箭头函数中的this不可通过任何方式修改

注意: 对于普通函数,多次通过bind改变this的指向,不管调用bind多少次,函数中的this永远都由第一次bind决定

以上就是JavaScript中this 的指向规则,有时会有多个规则同时出现,这时候需要根据不同规则的优先级来决定this的指向

首先,new 的方式优先级最高,接下来是 bind 这些函数,然后是通过对象调用的方式,最后是函数直接调用的方式,注意:箭头函数的 this 是在函数声明的时候被确定的,一旦被绑定,就不会再被任何方式所改变。

通过下图,对this对指向一目了然
深入剖析JavaScript中this的指向,简单方式正确辨别this指向