在function函数中
function a(){
console.log(this)
}
a() //window 谁调用就指向谁
对象中
var obj = {
aaa() {
setTimeout(function () {
console.log(this);//window 因为setTimeout是属于window的相当于window.里面的方法
});
console.log(this);//obj
},
};
obj.aaa();
构造函数中
function A (){
aaa(){
console.log(this)
}
}
var a = new A()
a.aaa() // this指向a实例对象 因为是a调用的
在箭头函数中
箭头函数没有this 他会向上一层的作用域找this
ar obj = {
aaa() {
setTimeout(function () {
console.log(this);//window
//console.log(this) 这层才是箭头函数的this 这句话的this就是下面这行代码的输出的this
setTimeout(()=>{
console.log(this) //window
})
});
console.log(this);//obj
},
};
obj.aaa();
所以如果想找箭头函数的this 就相当于在找上一层作用域的this 如果上一层还是箭头函数 那么它会再往上直到找到为止