call 和 apply 和 bind共同点:
作用一致,修改函数this指向, 都可以将函数绑定到上下文中
环境对象 this
特点: 谁调用我,我就指向谁
- 普通函数 : 函数名( ) this指向window
- 对象方法 : 对象名.方法名( ) this指向对象
- 构造函数 : new 函数名( ) this指向new创建实例对象
- 注意 : this的指向无法动态修改
上下文调用
作用是修改函数内部的this
- 函数名.call (修改后的this,形参1,形参2…………)
- 函数名.apply (修改后的this, 数组或伪数组 )
- 函数名.bind (修改后的this)
不会立即执行函数,而是得到一个修改this之后的新函数。
bind一般用于修改: 定时器函数、事件处理函数
call 和 apply 和 bind 三者区别
不同点:
传参方式不同 : call是按照顺序传参, apply是数组/伪数组传参
执行机制不同 : call和apply会立即执行函数, 而bind不会立即执行而是得到修改this的新函数