首先,this基于当前执行环境。
this的指向分为四种情况,因此也可以利用这些情况改变this的绑定,即改变执行环境
1.默认绑定
直接进行函数调用,没有指明对象。
this基于函数的运行环境,默认是this->window
默认
2.显式绑定
显式绑定有两种,apply与call,但是二者的使用稍有差别。
call与apply1.0
那么call与apply都可以改变this的指向,前面也提到使用上稍有差别,是什么差别呢?
如下例子所示,二者差别在于其参数不同,
call需要单独指定每个参数,接收的是依次传入的参数;
apply使用数组指定参数,因此传入的则是一个数组/类数组。
所以在用的时候要注意别把参数写错咯~
call与apply
此外,还有一种强制绑定bind,也可显式改变this指向
bind
3.隐式绑定
将函数赋值给某对象,但函数不属于对象
全局函数中this指向的是window;
当函数被当作方法调用,this指向的是该对象;
此时应当注意的是,当函数时匿名函数时,this指向的是全局环境,即window。
4.new
new
所以,要怎么判断this的指向呢?