箭头函数没有自己的this,直接继承外层非箭头函数作用域的this值;call/apply无法修改其this,仅传递参数;本质是语法层面不提供this绑定机制。

因为箭头函数根本没有自己的 this,它压根不绑定 this,而是直接继承外层非箭头函数作用域的 this 值。
箭头函数没有独立的执行上下文
普通函数调用时会创建自己的执行上下文,其中包含一个动态绑定的 this,call/apply/bind 正是通过替换这个上下文里的 this 来起作用的。而箭头函数跳过了这一步——它连执行上下文都不生成自己的 this 绑定,运行时直接沿用定义时所在词法环境的 this。
call 和 apply 只能传参,无法重写 this
当你对箭头函数调用 call(obj, ...args) 时:
用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
- 第一个参数 obj 被完全忽略,不会影响内部 this
- 其余参数照常传入函数体(如果函数有参数)
- 函数体内访问的 this,仍是它被写出来那一刻所在作用域的 this
看个对比就清楚了
假设全局下有 x = 100,对象 obj = { x: 200 }:
-
普通函数:
function f() { return this.x; }→f.call(obj)返回 200 -
箭头函数:
const f = () => this.x;→ 定义在全局,this指向 window →f.call(obj)仍返回 100
本质不是“限制”,而是“不存在”
这不是设计上的限制或屏蔽,而是语义层面的缺失:箭头函数语法本身就不提供 this 绑定机制。它没有 [[ThisMode]] 内部属性,也没有 [[Construct]] 方法,所以 call/apply/bind 对它的 this 无从下手——就像试图给空气拧螺丝一样,没地方发力。










