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

对象内箭头函数的this指向疑问:为何返回Window而非自身?

为什么对象中的箭头函数返回Window而非对象自身?

首先要明确箭头函数的核心规则:箭头函数没有自己独立的this,它会继承定义时所在词法作用域的this值,和调用时的上下文无关。

你写的这段代码里:

const object = {
  arrowFunc: () => this,
};

箭头函数arrowFunc是在全局作用域下定义的——对象字面量{}只是一个普通的表达式,并不会创建新的词法作用域。所以这个箭头函数的封闭词法上下文就是全局作用域,而浏览器环境中全局作用域的this就是Window对象,因此调用object.arrowFunc()时,返回的自然是Window。

如果换成普通函数,结果就会不同:

const object = {
  normalFunc: function() {
    return this;
  }
};
console.log(object.normalFunc()); // 返回object对象

因为普通函数的this由调用方式决定,当通过object.normalFunc()调用时,this会指向调用它的对象object。

总结:箭头函数的this看的是它定义时所在的作用域,而非调用时的所属对象;对象字面量不形成独立作用域,所以里面的箭头函数直接继承全局作用域的this。

内容的提问来源于stack exchange,提问作者Elbasel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:57:35