1、指向
(1)、纯粹的函数调用,this指向全局
(2)、作为对象方法的调用,this指向调用者
(3)、构造函数调用,this指向New出来的实例对象
(4)、Apply调用,this指向apply所接受的执行空间
(5)、箭头函数,this指向父级
(6)、定时器this指向window
(7)、事件绑定,this指向元素本身
2、改变指向
方法:
(1)、bind:第一个参数是this指向,后面是一个参数列表,可以多次传入,会合并
(2)、call:第一个参数是this指向,后面一个是参数列表
(3)、apply:第一个参数是this指向,第二参数是个数组
区别:
(1)、三者都可以改变函数的this指向
(2)、三者第一个参数都是this要指向的对象,如果没有这个参数或参数为undefined或null默认指向全局window对象
(3)、三者都可以传参,但是apply是数组,而call和bind是参数列表,apply和call是一次性传参,而bind可以分多次传参,会合并
(4)、bind是返回绑定this之后的函数,便于稍后调用,apply和call则是立即执行