什么是this
this:JS的关键词,是一个代词“指代不明”,需要代码执行过程中根据上下文判断this的指向。
默认情况下
- 全局域下 :this代指window
- 对象调用方法中 : this代指这个对象
- 直接调用函数 : 函数中的this代指window
正常函数的this指向
- 全局调用,函数名(),指向window
- 对象调用,对象.函数名(),谁调用指向谁
- 自执行函数,指向window
- 事件处理函数,指向事件源
- 定时器处理函数,指向事件源
- 函数定义未调用,指向不明确……
改变this指向
- 定义变量:声明变量赋值为this“保存当前this指向”
- 使用箭头函数:箭头函数中的this与箭头函数所在的上下文中的this一致。
- 使用bind()函数,参数1:”this的新指向” 参数2:”原函数的固化值,实参”,this的新指向。
- 使用call()函数,参数1:this指向的对象“如果不写或者null表示window” 参数2~参数n:”原函数的固化值,实参”与函数形参一一对应。
- 使用apply()函数,参数1:this指向的对象“如果不写或者null表示window” 参数2:是一个数组“根据数组内的顺序依次传入实参”。
bind 函数
1 | 不会立即执行函数 |
call 和 apply 的区别
1 | - 相同点 |
面试题
- 改变this指向的方法有哪些?
- call 和 apply 的区别?
Author: 李金帅
Link: https://lijinshuai21.github.io/Li_JinShuai_Blog/2021/09/01/this%E6%8C%87%E5%90%91/
Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.