点击上方 前端瓶子君,关注公众号
回复算法,加入前端编程面试算法每日一题群
一句话答案
因为箭头函数没有[[Construct]]
这个内部槽。
进一步解释
函数对象是一个支持[[Call]]
、[[Construct]]
内部方法的对象。每个支持[[Construct]]的对象必须支持[[Call]],也就是说,每个构造函数必须是一个函数对象。因此,构造函数也可以被称为 构造函数函数 或 构造函数对象。
所以,想要对某个对象使用 new
,就得确保该对象具有[[Construct]]
这个内部方法。而箭头函数没有[[Construct]]
。
为什么没有[[Construct]]
因为箭头函数设计之初,就是为了设计一种更简短的函数并且不绑定 this
。所以箭头函数不为参数 super
、this
或 new.target
定义本地绑定。箭头函数中的 this
、super
、arguments
及 new.target
这些值由外围最近一层非箭头函数决定。
而这样的一个函数设计者认为没有必要委托给能够[[Construct]]
的目标函数。所以箭头函数没有 [[Construct]]
。
同时因为没有构造原型的需求,所以箭头函数不存在 prototype
属性。
相关论据
![97847faa7dbeed12f07f350eac020f4f.png](https://i-blog.csdnimg.cn/blog_migrate/cc3a42c7db1121ecf10374078ba39bf2.png)
![d5473931c11a8d51d21b09cdfaed2c2e.png](https://i-blog.csdnimg.cn/blog_migrate/76815dd9a017ae9e461067d782045044.png)
![1887b3295b185375d433d1b2e1354c35.png](https://i-blog.csdnimg.cn/blog_migrate/853a43bccfac03584fa7ffa3a5ca8266.png)
![b6813d1e3e612edc1ef48f8c3d4a15d0.png](https://i-blog.csdnimg.cn/blog_migrate/e67bbcff1dd645c854609cc30632dbba.png)
以上为个人的一些见解,欢迎各位大佬拍砖
关于本文
作者:Jokerrr
https://juejin.cn/post/7050492355056664612
最后
欢迎关注【前端瓶子君】✿✿ヽ(°▽°)ノ✿
回复「算法」,加入前端编程源码算法群,每日一道面试题(工作日),第二天瓶子君都会很认真的解答哟!
回复「交流」,吹吹水、聊聊技术、吐吐槽!
回复「阅读」,每日刷刷高质量好文!
如果这篇文章对你有帮助,「在看」是最大的支持
》》面试官也在看的算法资料《《
“在看和转发”就是最大的支持