1.环境对象 this : 谁'调用'我,我就指向谁
普通函数: 函数名() this指向window
对象方法: 对象名.方法名() this指向对象
构造函数: new 函数名() this指向new创建实例对象
箭头函数: ()=>{} this.指向上一级
2.上下文调用 : 修改函数内部的this
2.1 函数名.call(修改后的this,形参1,形参2…………)
2.2 函数名.apply(修改后的this, 数组或伪数组 )
2.3 函数名.bind(修改后的this)
- 不会立即执行函数,而是得到一个修改this之后的新函数。
- bind一般用于修改: 定时器函数、事件处理函数
3.面试必问: call 和 apply 和 bind 三者区别
相同点 : 作用一致,修改函数this指向
不同点 : 传参方式不同 : call是按照顺序逐一传参, apply是数组/伪数组传参
执行机制不同 : call和apply会立即执行函数,而bind不会立即执行而是得到修改this的新函数