箭头函数中this指向Window而非对象的技术咨询
箭头函数作为对象方法时的
this指向问题解析 这不是ECMAScript的更新问题,箭头函数的this绑定规则从诞生起就没改变过——箭头函数没有独立的this上下文,它的this完全继承自定义时所在的外层词法作用域。
在你的代码里:
const obj = { fn: () => { console.log('obj', this); } } obj.fn();
定义fn箭头函数时,外层的词法作用域是全局作用域,浏览器环境下全局作用域的this就是Window对象。所以无论你通过obj调用这个函数,它的this都不会指向obj,始终是外层作用域的Window。
如果需要让this指向obj,只需把箭头函数替换成普通函数:
const obj = { fn() { console.log('obj', this); } } obj.fn();
普通函数作为对象方法时,this是调用时绑定的,会指向调用它的对象obj,这是常规的函数this绑定逻辑。
核心区别梳理:
- 普通函数:
this由调用时的上下文决定 - 箭头函数:
this固定为定义时外层词法作用域的this,无法被修改
内容的提问来源于stack exchange,提问作者theredled
相关产品推荐
相关产品推荐

