如果 new 一个箭头函数会怎样?
在 JavaScript 中,箭头函数(arrow function)是一个简洁的函数语法。它并不像普通函数那样可以使用 new
操作符来创建实例,因为箭头函数没有构造器(constructor)。
如果你尝试使用 new
来实例化一个箭头函数,你会得到一个错误或不符合预期的行为。例如:
const ArrowFunc = () => {};
const instance = new ArrowFunc(); // TypeError: ArrowFunc is not a constructor
原因:
- 箭头函数没有自己的
this
,它会从外部作用域继承this
。这使得它不适合作为构造函数。 - 箭头函数并没有内部的
prototype
属性,因此不能作为构造函数来创建实例。
如果你想创建一个可以使用 new
的构造函数,应该使用传统的函数声明或表达式:
function RegularFunc() {
this.value = 42;
}
const instance = new RegularFunc(); // Works fine
总结:箭头函数不能作为构造函数使用,因此不能用 new
来实例化。