this在js中的指向有很多种,本文整合了其中比较常见的几种this指向的问题。
this在不同环境中运行时运行的结果可能不同
在全局作用域中时 | this指向window |
在普通函数中时 | this指向函数调用函数的元素 |
在箭头函数中时 | 本身没有this指向,指向取决于函数环境(在全局作用域时为window,在函数中时指向此函数的调用者) |
事件绑定中的this | 指向的是这个事件的事件源 |
定时器中的this | 定时器采用的是回调函数,回调函数指向的是window,所以不管这个定时器的运行环境如果定时器始终指向window |
构造函数中的this | 构造函数配合new使用,new关键字的this指向的是实例化对象,所以构造函数中的this指向的是实例化对象 |
小结,this在js中的指向取决于其运行环境...
这其中也包括了定时器中的this, 定时器本质是一个回调函数经过延时后执行,回调函数是一个宏任务,js主线程在运行时会将定时器交给运行环境执行,优先执行速度较快的同步任务,所以this指向的是js运行环境window。