var a = {
b: {
c: {
d: {
e: ()=>{console.log(this)} // Window
}
}
}
}
var obj = {
say: function () {
console.log(this)
setTimeout(() => {
console.log(this)
});
}
}
obj.say() // obj
为什么第二个会指向obj,而不是window?
因为第二个是用obj调用的,调用者是obj
this指向的都是调用者
第一个只是执行了这段代码,但是没有调用者,所以默认就是window
细节可以看看this