为什么箭头函数不能当构造函数

什么是箭头函数:是一种更简洁的表示方法,但是没有自己的this,arguments,super或new.target。箭头函数适合用在  需要匿名函数的地方,并且它不能作为构造函数。

箭头函数和普通函数的区别:

 

 可以看到,当我们定义一个普通函数,它内部是有argments,caller,prototype的,虽然都是空

 

 当定义一个箭头函数的时候,打开发现,arguments和caller都报错,caller好理解,caller是指谁调用了它,没有caller说明,它不具备一个上下文环境

箭头函数也没有prototype属性

 

为什么这三个东西没有,就不能当做构造函数呢:

这就要说到new一个函数时候发生了什么...

new关键字时,

1,创建一个空对象

2,将该对象的_proto_属性链接到构造函数原型(箭头函数没有prototype,所以报错)

3,将该对象作为this上下文调用构造函数并且接受返回值(箭头函数没有自己的this、call函数无法改变箭头函数的指向)

所以,因为这三个问题,箭头函数是无法当做构造函数

posted @ 2022-03-28 10:29  沉梦昂志_doc  阅读(226)  评论(0编辑  收藏  举报