箭头函数原来是这样的,99.9% 的人都不知道这点

共 871字,需浏览 2分钟

 ·

2022-02-26 00:55

点击关注公众号,Java干货及时送达

作者:Jokerrr

链接:https://juejin.cn/post/7050492355056664612

一句话答案

因为箭头函数没有[[Construct]]这个内部槽。

进一步解释

函数对象是一个支持[[Call]][[Construct]]内部方法的对象。每个支持[[Construct]]的对象必须支持[[Call]],也就是说,每个构造函数必须是一个函数对象。因此,构造函数也可以被称为构造函数函数构造函数对象
所以,想要对某个对象使用new,就得确保该对象具有[[Construct]]这个内部方法。而箭头函数没有[[Construct]]

为什么没有[[Construct]]

因为箭头函数设计之初,就是为了设计一种更简短的函数并且不绑定this。所以箭头函数不为参数superthisnew.target定义本地绑定。箭头函数中的thissuperargumentsnew.target这些值由外围最近一层非箭头函数决定。
而这样的一个函数设计者认为没有必要委托给能够[[Construct]]的目标函数。所以箭头函数没有[[Construct]]
同时因为没有构造原型的需求,所以箭头函数不存在prototype属性。

相关论据

image.png
image.png
image.png
image.png

以上为个人的一些见解,欢迎各位大佬拍砖

 

1、别瞎写工具类了,Spring自带的这些他不香麽?

2、性能最高提升1400%,树莓派32位/64位系统对比测试

3、一个比SpringBoot快44倍的Java框架

4、时隔三年,Elastic 8正式发布

5、从Windows切换到Mac,这些不能错过的Tips!

点分享

点收藏

点点赞

点在看

浏览 19
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报