this环境变量

150 阅读1分钟

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的新函数