this三种指向
普通函数 : 函数名.() this指向window
构造函数: new 函数名() this指向创建的实例对象
对象方法: 对象名.方法() this指向对象
默认情况下this无法被修改
修改this的三个方法 call(), apply(), bind()
call, apply会立即执行函数 但是他们的传参方式不同, all是单个传参, apply是数组或伪数组传参
bind不会立即执行函数 而是返回一个修改this之后的新函数
this的几种特殊情况
箭头函数本身没有this, 而是通过作用域链访问上级this
例:1. let fn3 = () => { console.log(this) //this指向window } fn3()
- let obj = {
eat() {
let fn1 = () => {
console.log(this) //this指向obj
}
fn1()
}
}
obj1.eat()
定时器函数this直接指向window