前端/移动开发面试题更新 2026-08-05

尝试用 new 运算符调用一个箭头函数,预期会出现什么结果?请解释原因,并说明箭头函数与普通函数在构造调用上的关键差异。

前端/移动开发技术原理JavaScript

考察说明

考查对箭头函数本质特性及其与构造函数的差异的理解。

回答思路

  1. 【回答框架 1】箭头函数没有自己的 this,且不绑定 arguments、super 或 new.target,因此它不能作为构造函数使用。使用 new 调用箭头函数时,JavaScript 引擎会抛出 TypeError,提示箭头函数不是构造函数。
  2. 【回答框架 2】根本原因在于箭头函数的词法 this 绑定,它没有 [[Construct]] 内部方法,而 new 运算符要求目标对象具备 [[Construct]] 方法。普通函数和类都有这个方法,因此可以被 new 实例化,并创建新的对象绑定 this。
  3. 【回答框架 3】此外,箭头函数也没有 prototype 属性,而 new 调用时通常需要将构造函数的 prototype 赋给新对象的原型,这进一步说明了箭头函数不适合构造调用。
  4. 【关键点 1】new 一个箭头函数会抛出 TypeError,因为箭头函数不是构造函数。
  5. 【关键点 2】箭头函数没有 [[Construct]] 内部方法,因此不能被 new 调用。
  6. 【关键点 3】箭头函数没有 prototype 属性,也没有自己的 this,这与普通函数形成鲜明对比。
  7. 【易错点 1】容易混淆箭头函数与普通函数在 this 绑定上的区别,注意箭头函数的 this 是词法作用域,不可通过 new 或 call/apply 改变。
  8. 【易错点 2】不要试图通过给箭头函数添加 prototype 属性来使其可构造,这是无效的。
  9. 【易错点 3】在需要动态 this 或作为构造函数时,应使用普通函数或 ES6 的 class。