浅析this

首先,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的指向呢?

在这里我有个秘诀“谁调用我,我就属于谁”,听着蛮有趣的但是又有种“空即是色,色即是空”的意味。OK,让我来揭秘吧!









最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。