函数this的指向与修改

158 阅读1分钟

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()

  1. let obj = {

eat() {

let fn1 = () => {

console.log(this) //this指向obj

}

fn1()

}

}

obj1.eat()

定时器函数this直接指向window