题目:
箭头函数和普通函数有什么区别?
箭头函数为什么不能用作构造函数?
参考答案
区别:
- 箭头函数在一些情况下书写更简洁(如只有一个参数、函数体直接返回值时候)。
- 箭头函数没有自己的this,箭头函数内的this变量指向外层非箭头函数的函数的this,或者将该箭头函数作为属性的对象。箭头函数也不支持call()/apply()函数特性。
- 箭头函数内部不可以使用arguments对象。
- 箭头函数不可以当做构造函数。
为什么不能用作构造函数:
- 构造函数是通过new关键字来生成对象实例,生成对象实例的过程也是通过构造函数给实例绑定this的过程,而箭头函数没有自己的this。
- 创建对象过程,new 首先会创建一个空对象,并将这个空对象的proto指向构造函数的prototype,从而继承原型上的方法,但是箭头函数没有prototype。
- 因此不能使用箭头作为构造函数,也就不能通过new操作符来调用箭头函数
网友评论