this、call 和 apply
1.this
this 总是指向一个对象,具体指向的对象,是在运行时基于函数的执行环境动态绑定的,并非函数被声明时的环境。
2.this指向分类
- 作为对象的方法调用
- 作为普通函数调用
- 构造器调用
Function.prototype.call 或 Function.prototype.apply 调用
3.call和apply的区别
Function.prototype.call 和 Function.prototype.apply 都是很常用的方法,作用相同,区别在于传参不同。
apply 有两个参数,且为固定,第一个参数指定了函数体内 this 对象的指向,第二个参数为一个带下标的集合,可以为数组、类数组。
func.apply( null, [ 1, 2, 3 ] );
- call 传参数量不固定,第一个参数跟 apply 相同,从第二个参数开始往后,每个参数被依次传入函数.
func.call( null, 1, 2, 3 );
4.call和apply的用途
- 改变
this 指向
- 实现
Function.prototype.bind 机制
- 借用其他对象的方法