不能。箭头函数完全不可用 new 调用,因其缺少[[Construct]]内部方法、无prototype属性、不支持new.target;尝试调用会直接抛出TypeError:“not a constructor”。

不能。箭头函数**完全不可以**用 new 关键字当作构造函数调用。
为什么不能用 new 调用箭头函数
箭头函数在语言设计上就缺少构造函数必需的内部机制:
- 它没有
[[Construct]]内部方法,而new操作符必须依赖这个方法来初始化实例 - 它没有
prototype属性((() => {}).prototype是undefined),无法支持原型链继承 - 它不支持
new.target,也无法识别是否被new调用
尝试 new 箭头函数会发生什么
运行以下代码会立即抛出错误:
const Person = (name) => { this.name = name; };
const p = new Person('Alice'); // TypeError: Person is not a constructor
错误类型是 TypeError,提示“不是构造函数”,不是运行时逻辑错误,而是语法层面的禁止。
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
立即学习“Java免费学习笔记(深入)”;
需要构造行为时该怎么做
如果目标是创建实例对象,必须使用传统方式:
- 用
function声明普通函数 - 或使用
class语法(本质也是函数) - 箭头函数可作为辅助工具,比如在类内部定义回调,但绝不能替代构造器本身
常见误用场景提醒
以下写法看似合理,实则无效:
-
const obj = new (() => ({ x: 1 }))();→ 报错 -
class A { constructor() { this.fn = () => {}; } }中,this.fn是实例方法,但this.fn本身仍不能被new调用

















