为何箭头函数不可以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步的