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

为何使用箭头函数扩展已有对象属性会失败?

为什么箭头函数在这里无法识别this指针?

核心原因:箭头函数没有独立的this上下文

箭头函数的关键特性是不绑定自己的this,它会在定义时捕获当前词法作用域中的this值,并永久保留这个绑定,不会随调用方式改变而变化。

对比普通函数与箭头函数的行为

  • 普通函数作为 getter:当你将普通函数传给__defineGetter__时,这个函数的this会在调用时动态绑定到调用它的对象(也就是String实例)。比如执行"hello".upper时,函数内的this指向字符串"hello",所以this.toUpperCase()能正常调用。

  • 箭头函数作为 getter:你定义的箭头函数() => this.toLowerCase(),它的this是在定义时从外层作用域捕获的。如果这段代码运行在全局作用域(非严格模式),this会指向全局对象(浏览器中是window),但全局对象没有toLowerCase方法;如果是严格模式或ES模块环境,this会是undefined,直接导致调用this.toLowerCase()报错。

总结

Getter方法需要函数能根据调用对象动态绑定this,而箭头函数的this是固定的词法this,无法满足这种动态绑定需求。因此在这类场景下,必须使用普通函数而非箭头函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:31:04