Js ES6 特性
🍹 ES6新增块级作用域、箭头函数、模板字面量、解构赋值、类和模块等特性,简化代码编写、提高代码可读性和可维护性。
1 拷贝
- 拷贝
- 深拷贝与浅拷贝的概念只存在于引用数据类型。
- 浅拷贝:B复制了A,当修改A时,B也跟着变了。
- 深拷贝:B复制了A,当修改A时,B没有随着变。
1-1 浅拷贝
1 |
|
1-2 深拷贝
- 深拷贝
- Array:slice()、concat()、Array.from()、
…
操作符(只实现一维数组的深拷贝)。 - Object
- Object.assign()、
…
操作符(只能实现一维对象的深拷贝)。 - JSON.parse(JSON.stringify(obj)):实现多维对象深拷贝。
- 但是容易忽略undefined,任意函数,以及Symbol值。
- Object.assign()、
- Array:slice()、concat()、Array.from()、
(1) 数组
1 |
|
(2) 对象
1 |
|
(3) 通用
1 |
|
2 生成器
- 生成器
- 生成器函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同。
- 返回的结果是迭代器对象,调用迭代器对象的next方法可以得到yield语句后的值。
- yield类似函数的暂停标记,也可认为是函数的分隔符,每调用一次next执行一段代码。
- next方法可以传递实参,作为yield语句的返回值,
*
的位置则没有限制。
2-1 函数使用
1 |
|
2-2 函数参数
1 |
|
2-3 函数实例
1 |
|
2-4 案例演示
1 |
|
3 模块化
- 模块化
- 将一个大的程序文件,拆分成许多小文件,然后将其组合起来。
- 模块功能构成的命令
- export:用于规定模块的对外接口。
- import:用于输入其他模块提供的功能。
3-1 模块化的暴露
- 模块化的暴露
- 方式:分别暴露、统一暴露、默认暴露。
- 分别暴露适用于导出多个内容,方便选择性导入。
- 统一暴露适用于导出一个主要的模块内容,方便简化导入。
- 默认暴露适合于导出单个主要内容的模块,简化导入操作。
(1) 分别暴露m1.js
1 |
|
(2) 统一暴露m2.js
1 |
|
(3) 默认暴露m3.js
1 |
|
3-2 模块化的导入
1 |
|
3-3 解构赋值形式
1 |
|
4 Class类
- Class类
- 通过class关键字定义类,ES6的class可看作语法糖。
- super(调用父级构造方法)。
- extends(继承父类)、static(定义静态方法和属性)。
- class(声明类)、constructor(定义构造函数初始化)。
1 |
|
5 Promise
- Promise
- ES6引入的异步编程新解决方案,语法上是个构造函数。
- 可用来封装异步操作,并可以获取其成功或失败的结果。
5-1 基本使用
1 |
|
5-2 案例演示
1 |
|
5-3 Promise-then
1 |
|
5-4 Promise-catch
1 |
|
6 数据结构
- 数据结构
- Set
- 集合,类似于数组,但成员的值是唯一的,实现了iterator接口。
- 可以使用扩展运算符和for…of进行遍历,集合的属性和方法如下。
- size:返回集合的元素个数。
- add():增加一个新元素,返回当前集合。
- delete():删除元素,返回boolean值。
- has():检测集合中是否包含某个元素,返回boolean值。
- clear():清空集合,返回undefined。
- Map
- 类似于对象,也是键值对的集合,键的范围不限于字符串。
- 实现了iterator接口,可使用扩展运算符和for…of进行遍历。
- size:返回Map的元素个数。
- add():增加一个新元素,返回当前Map。
- get():返回键名对象的键值。
- has():检测Map中是否包含某个元素,返回boolean值。
- clear():清空集合,返回undefined。
- Set
6-1 Set
1 |
|
6-2 Map
1 |
|
7 数值扩展
1 |
|
8 对象扩展
- 对象扩展
- Object.is:比较两个值是否严格相等,与===行为基本一致。
- Object.assign:对象的合并,将源对象的所有可枚举属性,复制到目标对象。
__proto__
、setPrototypeOf、getPrototypeOf,则可以直接设置对象的原型。
1 |
|
Js ES6 特性
https://stitch-top.github.io/2024/09/26/web/web01-javascript/javascript07-js-es6-te-xing/