箭头函数不能用 new 实例化,根本原因在于它没有[[construct]]内部方法,不生成实例对象、无prototype属性、不支持原型链继承,设计定位仅为非构造型的语法糖。

箭头函数不能用 new 实例化,根本原因在于它**没有构造能力的底层机制**,不是语法限制,而是语言规范层面的设计决定。
没有 [[Construct]] 内部方法
JavaScript 中能被 new 调用的函数,必须实现内部方法 [[Construct]]。普通函数(包括函数声明、函数表达式)在创建时会自动获得这个方法;而箭头函数在引擎实现中**压根不提供 [[Construct]]**。一旦尝试 new arrowFunc(),运行时直接抛出 TypeError: arrowFunc is not a constructor。
不生成实例对象,也没有原型链支撑
构造函数通过 new 执行时,会做几件事:创建空对象、绑定 this、执行函数体、返回新对象(除非显式返回其他对象)。箭头函数:
用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
- 没有自己的
this,无法在实例创建过程中正确绑定初始上下文 - 不设置
prototype属性(arrowFunc.prototype === undefined) - 不支持以实例方式继承——没有原型,自然无法构成原型链
设计定位就是“非构造型函数”
ES6 明确将箭头函数定义为一种**精简的函数表达式语法糖**,目标是解决回调中 this 绑定混乱、简化短函数书写。它从诞生起就排除了构造场景:
- 没有
arguments对象,也不支持new.target - 没有
super、不能用于类方法定义(因无动态this) - 所有这些缺失,都服务于一个统一前提:它不参与对象实例化生命周期
替代方案很明确
需要构造行为,就该用传统函数:
- 函数声明:
function Person(name) { this.name = name; } - 函数表达式:
const Person = function(name) { this.name = name; }; - ES6 类(本质仍是语法糖):
class Person { constructor(name) { this.name = name; } }
把箭头函数当构造函数,就像拿剪刀拧螺丝——工具不对口,不是不会,是根本没留那个卡口。










