var obj = { id: "awesome", cool: () => { // 向上寻找this,js会自动为function的作用域创建this指向function本身,箭头函数除外 console.log(this.id); } }; var id = "not awesome"; obj.cool(); // not awesome setTimeout(obj.cool, 1000); // not awesome
obj.cool() 执行调用时,this本应该指向obj,但是因为cool是用箭头函数声明的,所以cool本身绑定了词法作用域,也就是声明时的this,cool被声明时作用域上层并没有其他函数,所以this指向window。
标签:obj,指向,作用域,awesome,id,奇怪,cool From: https://www.cnblogs.com/ran2022/p/17337257.html