箭头函数根本没有自己的this,所以内部的this就是外层代码块的this,即指向上下文函数this。
let obj = { fun:function(){ setTimeout(function(){ console.log(this); // this指向window },100); setTimeout(()=>console.log(this),100); // this指向obj } }; obj.fun();
再举例子:
let site = 'abc'; // let声明的变量不会放在window上 let obj1 = { site: '123', fun1:function(){ console.log(this);// this指向obj1 console.log(this.site);// 123 }, fun2: () => { console.log(this);// this指向window console.log(this.site);// undefined } }; obj1.fun1(); obj1.fun2();