this在不同场景如何区值

this指向:当函数运行时候才能决定this指向(谁执行的this指向谁),不取决于函数定义

function fun1 () {
  console.log(this); // window
}
class People {
  constructor (name) {
    // 当类实例化时候,this就是这个实例
    this.name = name
  }
  say () {
    // 当类实例化时候,this就是这个实例
    console.log(this);
  }
  haha () {
    setTimeout(function () {
      // 这里是setTimeout执行的this,因为setTimeout是window下的方法(可以写为window.setTimeout),所以这里this是window
      console.log(this);
    }, 1000);
  }
  xixi () {
    setTimeout(() => {
      // 特例: 箭头函数会改变this指向,到上层作用域,也就是这个实例
      console.log(this);
    }, 1000);
  }
}
const p = new People('test')
p.say()
p.haha()
p.xixi()

results matching ""

    No results matching ""