this变量在运行时决定指向。当函数被调用,会创建上下文,其中包括创建this。this不指向函数所在的词法作用域,也不遵循词法作用域的遍历原则,当this的变量引用没有指向时,会遍历调用链栈,最终指向全局this的变量,但函数运行完后变量面临释放。
在函数调用时可以用call()、apply()或bind()显式指定this。另外es6的部分新函数也会改变this指向,new方法也会把this指向新创建的对象。多个this修改的情况下,优先级为new绑定>显式绑定>隐式绑定>默认绑定。
箭头函数会把函数的this指向本对象,此时this无法被显示绑定或new绑定修改。