为何箭头函数不可以new

133 阅读1分钟

为何箭头函数不可以new

箭头函数是ES6中的提出来的,它没有prototype,也没有自己的this指向,更不可以使用arguments参数,所以不能New一个箭头函数。

如果非要对箭头函数进行new操作,在浏览器中可以看到如下报错信息

var a = ()=>{}
new a  或者  new a()

VM320:1 Uncaught TypeError: a is not a constructor
    at <anonymous>:1:1

下面再看一下new操作符都做了哪些事情?

1.创建临时对象/新对象

2.绑定原型(也就是将对象的__proto__属性指向构造函数的prototype属性)

3.指定 this = 临时对象/新对象 (也就是为这个对象添加属性和方法)

4.执行构造函数

5.返回临时对象

而箭头函数是没有办法完成上面的 2、3步的