| 
 | |
| 
 | 
| 开发:
C++知识库 
Java知识库 
JavaScript 
Python 
PHP知识库 
人工智能 
区块链 
大数据 
移动开发 
嵌入式 
开发工具 
数据结构与算法 
开发测试 
游戏开发 
网络协议 
系统运维 教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 | 
| -> JavaScript知识库 -> ES6 转 ES5 babel 源码阅读篇(一) -> 正文阅读 | 
|  | 
| [JavaScript知识库]ES6 转 ES5 babel 源码阅读篇(一) | 
| ?一、先吃个小栗子? 
 使用 class 定义的 Person 类,经过 Babel转化为 ES5 生成的代码如下? 可以看到 class 定义的 Person类,在es5 中是使用 function 来定义的,里面调用了_classCallCheck(this, person) 。这个方法的目的是:把 Person这个函数和普通函数区别开来,主要是希望通过 new 去调用,而不是随随便便调用,如下 
 如果当前一个普通函数调用,可以看到在严格模式下 this 是 undefined,,非严格模式下是 window,于是会判断 undefined或者 window 并不能作为 Person 的实例,因此会报错。 二、再吃个中栗子经过 Babel 转化并美化代码如下:这次东西比较多,不要被吓到,我们一步步来 
 ?首先用了一个立即执行函数,把 function 定义的 Person 类放在立即执行函数中,最后并返回了。这里为什么要用到立即执行函数? 
 立即执行函数里面放的是一个 function 实现的Person类,以及类中的方法_classCallCheck这个前面讲过,然后下面执行了 _createClass(Person, [{ ... }]) ,这个方法的目的又是什么呢? 在 es6以前,给类添加公共方法,是在原型上添加的? 因此 _createClass() 这个方法的作用是往Person的原型上添加方法,第一个参数是类,第二个参数接受一个数组,数组里面存放着描述方法的对象们, 那为什么不直接在 Person 的原型上直接加而是搞一个方法添加,这就是提高代码的复用,真实开发中,我不可能直接Person一个类? 
 _createClass 方法 
 ? | 
|  | 
| JavaScript知识库 最新文章 | 
| ES6的相关知识点 | 
| react 函数式组件 & react其他一些总结 | 
| Vue基础超详细 | 
| 前端JS也可以连点成线(Vue中运用 AntVG6) | 
| Vue事件处理的基本使用 | 
| Vue后台项目的记录 (一) | 
| 前后端分离vue跨域,devServer配置proxy代理 | 
| TypeScript | 
| 初识vuex | 
| vue项目安装包指令收集 | 
|  | 
| 上一篇文章 下一篇文章 查看所有文章 | 
| 
 | 
| 开发:
C++知识库 
Java知识库 
JavaScript 
Python 
PHP知识库 
人工智能 
区块链 
大数据 
移动开发 
嵌入式 
开发工具 
数据结构与算法 
开发测试 
游戏开发 
网络协议 
系统运维 教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 | 
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年10日历 | -2025/10/31 16:03:24- | 
| 
 | 
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |