问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ES6 系列之 Babel 是如何编译 Class 的(上)

发布网友 发布时间:2024-10-21 22:09

我来回答

1个回答

热心网友 时间:2024-11-10 03:04

在探讨Babel是如何编译ES6的Class之前,我们先要明确ES6的Class和ES5的构造函数之间的对应关系。简言之,ES6的Class可以视作一种语法糖,它的大部分功能,ES5都能实现。新引入的Class写法,旨在让对象原型的定义更清晰、更符合面向对象编程的语法规则。

Class的构造函数在ES6中与ES5中的构造函数对应,例如:

ES6中的构造函数Person对应ES5中的构造函数如下:

值得注意的是,类中的所有定义方法均不可枚举,即无法通过for...in循环遍历。

在ES6中,实例属性定义有所变化,现在我们可以将其直接定义在类内,而不仅仅局限于constructor方法中。例如:

然而,在ES5中:

现在,我们可以通过新的提案将实例属性和静态属性的定义简化为:

ES6中的静态方法与ES5中类方法的对应关系如下:

在ES6中:

而ES5中的对应写法为:

静态属性指的是Class本身的属性,而非实例对象上的属性。在ES5中,添加静态属性的写法为:

而新的提案允许我们以如下方式定义静态属性:

ES6要求类必须通过new关键字调用,这是它与普通构造函数的主要区别。在ES5中,构造函数可以不使用new直接执行。

ES6的Class中支持getter和setter,用于对某个属性设置存值函数和取值函数,拦截属性的存取行为。其对应ES5的写法如下:

Babel在编译时并不会直接转换成上述形式,而是生成一些辅助函数帮助实现ES6的特性。以下为使用Babel编译后的代码示例:

ES6代码为:

Babel编译后为:

编译中_BclassCallCheck函数用于检查是否通过new的方式调用Class,确保类必须通过new调用。

当以var person = Person()形式调用时,this指向window,instance instanceof Constructor为false,符合ES6的要求。

通过Babel编译后的代码,我们可以看到Class的特性得到了实现,类的构造、属性、方法、继承等机制都被转换为了JavaScript的原生语法。Babel通过生成辅助函数如_createClass和_defineProperties来实现这一转换。

随着Babel的编译,Class的实例属性、静态方法、静态属性、new调用、getter和setter等特性均得到了实现。类的继承机制将在后续文章中进一步探讨,敬请期待。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
山东沃尔德集团集团所辖公司介绍 齐鲁银行无忧贷和市民贷哪个好 什么叫补按揭 后按揭贷款什么意思 买房者续按揭有什么危害 加按揭是什么意思 八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 求大神帮忙鉴定,新入手iPad mini2激活日期是7月15号可是我大约是11月2... ...上一个适当的句子,使对话的意思连贯,完整,会的多加悬赏 武汉脑清新口服液能够解决高三学生的厌食问题吗?有没有副作用? ...每个空白处填上一个合适的句子,使对话的意思连贯、完整 脑清新有副作用吗? ...帮我找一下J Reyez的Look To The Sky这首个的歌词啊 ipad mini2 序列号怎么查 求帮验证 序列号:DLXLVU37FCMC 利润表中的本年累计金额是什么? J.Reyez-The Mind's Motivation的歌词 J Reyez的《That’s OK With Me》中女声部分的歌词 J.Reyez 的that's okay with me中英文歌词对照 ...会干是吗?听说井水要正常使用,不正常使用的水井,水会变的不好,是... 奔跑吧兄弟里北鼻坐在车里哼的歌名字叫什么? 奔跑吧兄弟里baby喜欢唱的一首歌叫什么名字,崩沙嘎啦嘎崩沙嘎拉嘎_百 ... ...月报和年报有什么区别?特别是他们的格式区别、如利润表的月... 说说,你们所在的城市有哪些重口味美食? 利润表 月报 本年累计金额如何填? 小孩来月经的前兆 第一次来月经的征兆有哪些 苹果手机怎么设置正在通话中? 脑清新服用后会不会有副作用,会不会发胖呢? worriedpaul 脑清新有什么副作用?(喝过的来,打广告的别来!) 北极地区的代表动物是 ( ) A.企鹅 B.海豹 C.北极熊 D.长颈 (下886?湘潭)南极地区的代表性动物是( )A.企鹅B.北极熊C.海豹D. 脑清新多长时间吃一盒对孩子好?有没有副作用啊? 武汉自考综合实践考核多少分及格? 脑清新产品里面还有激素吗?会不会对身体造成副作用? 明年就要高考了,现在开始服用脑清新,服用一年会不会有副作用呢? ...脑轻松、脑力键这三种药效果怎样?有什么副作用?吃那种药最佳?希望专 ... 范冰冰国际知名度有章子怡高吗? - 知乎 水泥凝固多久开始浇水 水泥凝固多久后可浇水 水泥硬化多久后需浇水 水泥凝固后多少时间需要浇水 国家为什么不让面包车拉货, 货运面包车为什么通行证很难办,即使办的通... 水泥浇完多久后要洒水 章子怡和范冰冰谁的知名度更高一些? 苹果14不预约直接去直营店能购买吗 三国演义中的三国指的是哪三个国 三国演义中的三国指的是什么 桃的三人是哪三人使用双股剑是谁使丈八蛇... 感觉自己现在就是个废物