JavaScript基础知识-this、call 和 apply

63 阅读1分钟

this、call 和 apply

1.this

this 总是指向一个对象,具体指向的对象,是在运行时基于函数的执行环境动态绑定的,并非函数被声明时的环境。

2.this指向分类

  • 作为对象的方法调用
  • 作为普通函数调用
  • 构造器调用
  • Function.prototype.callFunction.prototype.apply 调用

3.call和apply的区别

Function.prototype.callFunction.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 机制
  • 借用其他对象的方法