this永远指向函数运行时所在的对象,而不是函数被创建时所在的对象。
一.普通函数中的this指向
1.作为函数名调用
函数作为全局对象调用,this指向全局对象。

2.作为方法调用
函数作为对象的一个属性,成为该对象的一个方法,this指向该对象。

3.作为构造函数使用
用new调用的函数,this指向被绑定的那个对象上面。

4.apply或call被调用
函数this指向apply或call调用时的第一个参数。

二.箭头函数中的this
箭头函数的this指向父级作用域。


总结:this指向永远是最后调用它的对象。
下面的例子中,最后一个调用函数的对象是b,所以这里的this指向b对象。

下面例子中,最后一个调用函数的对象是c,而c是全局定义的变量,所以这里的this指向windows。

网友评论