js this指向问题

这篇文章,将帮助你更好地理解 js this 指向问题。

this指向

来看几个函数调用的场景:

function foo() {
  console.log(this.a)
}
var a = 1
foo()

const obj = {
  a: 2,
  foo
}
obj.foo()

const c = new foo()

我们来一个个分析上面几个场景:

1、对于「直接调用foo」而言,无论这个foo函数放在什么地方,this一定为window。

2、一定要记住,谁调用了函数,谁就是this,所以obj.foo()这个场景下foo函数中的this就是obj。

3、对于new这种方式来说,this被永远地绑定在了c上面。被永远地绑定在了c上面,意思是说,不会被任何方式改变this。

只要把这三个规则熟记于心,就可以覆盖大部分的this指向的情况了。