| |
|
|
开发:
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年11日历 | -2025/11/28 0:48:45- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |