案例1
let obj = {
id:100,
first:()=>{
console.log(this)// this指向的是window
console.log(this.id)
}
obj.first();
运行结果:
总结:
//理论应该this应该指向当前对象obj,console.log(this.id)打印出来是undefiend
//因为箭头函数不存在this,this指向的是全局window
案例2
let obj = {
id:100,
second:function(){
setTimeout(function() {
console.log(this.id)
}, 3000);
}
obj.second()
运行结果:
let obj = {
id:100,
print:function(){
console.log(this) //this 指针指向obj对象
setTimeout(function() {
console.log(this) //this指针指向window
}, 3000);
}
}
obj.second()
总结:this指针改变了
如果不让this指针改变
如下:
let obj = {
id:100,
print:function(){
console.log(this) //this 指针指向obj对象
setTimeout(()=> {
console.log(this) //this指针指向obj对象
}, 3000);
}
}
obj.second()