You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

箭头函数中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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 01:49:56