一、ES10新特性
1、对象扩展方法
Object.fromEntries(): 将二维数组转换为对象
2、字符串扩展方法
-
trimStart(): 清除左侧空格
-
trimEnd(): 清除右侧空格
3、数组扩展方法
-
flat(): 将多维数组转化为低维数组
-
flatMap(): 首先使用映射函数映射每个元素,然后将结果压缩成一个新数组
4、Symbol的扩展
Symbol.description: 得到Symbol传入的字符串
二、ES11的新特性
1、 私有属性
语法:
class Person {
// 公有属性
name;
// 私有属性
#age;
#weight;
// 构造方法
constructor(name, age, weight) {
this.name = name;
this.#age = age;
this.#weight = weight;
}
}
2、 Promise 扩展方法
-
Promise.all(): 接收一个promise的iterable类型的输入,并且只返回一个Promise实例, 那个输入的所有promise的resolve回调的结果是一个数组
-
allSettled(): 返回一个在所有给定的promise都已经fulfilled或rejected后的promise,并带有一个对象数组,每个对象表示对应的promise结果
3、 字符串扩展
String.prototype.matchAll(): 返回一个包含所有匹配正则表达式的结果及分组捕获组的迭代器
4、可选链操作符
语法:
// 返回config.db.host数据,若存在则返回,若不存在则返回undefined
let doHost = config?.db?.host;
// 等同与: let doHost = config && config.db && config.db.host;
5、 动态import
语法:
// 动态引入xxxAAA文件,并在加载完成后调用xxxBBB方法
import('xxxAAA.js').then(module => {
module.xxxBBB();
});
6、BigInt类型
定义: BigInt 是一种内置对象,它提供了一种方法来表示大于 2^53 - 1 的整数
语法:
let a = 512n; // 表示数值为512的BigInt类型
let b = 123;
BigInt(b); // 函数转换
7、绝对全局变量globalThis
定义: 全局属性 globalThis 包含全局的 this 值,类似于全局对象(global object)