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