为什么箭头函数不能当构造函数
什么是箭头函数:是一种更简洁的表示方法,但是没有自己的this,arguments,super或new.target。箭头函数适合用在 需要匿名函数的地方,并且它不能作为构造函数。
箭头函数和普通函数的区别:
可以看到,当我们定义一个普通函数,它内部是有argments,caller,prototype的,虽然都是空
当定义一个箭头函数的时候,打开发现,arguments和caller都报错,caller好理解,caller是指谁调用了它,没有caller说明,它不具备一个上下文环境
箭头函数也没有prototype属性
为什么这三个东西没有,就不能当做构造函数呢:
这就要说到new一个函数时候发生了什么...
new关键字时,
1,创建一个空对象
2,将该对象的_proto_属性链接到构造函数原型(箭头函数没有prototype,所以报错)
3,将该对象作为this上下文调用构造函数并且接受返回值(箭头函数没有自己的this、call函数无法改变箭头函数的指向)
所以,因为这三个问题,箭头函数是无法当做构造函数