这篇文章,将帮助你更好地理解 js 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指向的情况了。