this指向了哪里?

100 阅读1分钟

this是什么

实际上this就是一个指针,他最终指向函数点用的对象,通常this指向有很多种情况

this的默认指向

通常情况下this是默认指向windowconsole.log(this); // window,这里不区分严格模式和非严格模式,都是指向window

严格与不严格

在严格模式下,函数中的this是指向undefined的,但是在非严格模式下函数中的
this是指向window的
`function fn(){
    console.log(this);//非严格模式指向window,严格模式指向undefined
} fn();`

箭头函数

箭头函数指向定义时,定义的this就确定了,指向了他的外层
箭头函数不能作为构造函数使用会出现错误
箭头函数没有自己的this不能使用call、apply、bind这些方法 改变this的指向

隐式绑定

如果函数调用时,前面存在调用它的对象,那么this就会隐式的绑定到这个对象上。
如果函数调用前存在多个对象,this指向距离调用自己最近的对象

显示绑定

显示绑定就是通过call、apply、bind方法改变this指向。这三个方法传递的第一个
参数就是最终的this指向。如果第一个参数是null或undefined,那么this将采用
默认绑定的规则,指向全局对象。

new绑定

使用new绑定时,this指向新创建的那个对象。

总结

this绑定无非就是分为几种场景:默认绑定、隐式绑定、显示绑定、new绑定、
箭头函数绑定、只要分辨出对应的方法其实很简单