ES7新特性
- includes:查询是否包含某一个值
- ******:类似
Math.pow
,做平方,比如num ** 2 == Math.pow(num, 2)
ES8新特性
对象相关属性
- Object.keys:获取常见对象的key
- Object.values:获取常见对象的value
- Object.entries:获取常见对象的[key,value],也可以对数组/字符串进行操作。
字符串填充方法
padStart/padEnd
1
2
3
4
5
6
7
8
9
10// 场景一: 对事件处理
const minute = '5'
console.log(minute.padStart(2, '0')) // 05
// 如果大于两位则不会变
console.log(minute.padEnd(2, '0')) // 50
// 场景二:对身份证/银行卡等进行隐藏数据
const cardNumber = '123456789123456789'
const lastNumber = cardNumber.slice(-4) // 截取最后四位
const finalCardNumber = lastNumber.padStart(cardNumber.length, '*')
console.log(finalCardNumber) // **************6789Object.getOwnPropertyDescriptors
async/await(后续补充)
ES9新特性
iterators
Promise finally (后续补充)
ES10新特性
flat/flatMap
flat数组扁平化。
Object.fromEntries可以把entries转成对象
trimStart/trimEnd去除首/尾部的空格
Symbol description
Option catch binding: 后续补充
ES11新特性
BigInt:表示大数字。在大数字结尾加一个n
??(空值合并运算符):前面的值为undefined/null会指向后面的值
1
2
3const message = null ?? "默认值" // "默认值"
const message = undefined ?? "默认值" // "默认值"
const message = "" ?? "默认值" // ""Optional Chaining(可选链)
?. => .
Global This
for…in
ES12新特性
FinalizationRegistry
监听对象是否被回收,传入回调函数
1
2
3
4
5
6let obj = {}
const finalRegistry = new FinalizationRegistry((value) => {
console.log("对象被回收了", value)
})
finalRegistry.register(obj, 'beichen')
obj = nullWeakRef
1
2
3
4
5
6
7
8let obj = {}
const info = new WeakRef(obj)
const finalRegistry = new FinalizationRegistry((value) => {
console.log("对象被回收了", value)
})
const infoRef = info.deref() // 获取弱引用中的内容
finalRegistry.register(obj, 'beichen')
obj = null逻辑赋值运算符
1
2
3
4
5
6
7
8
9
10function(message) {
message ||= "默认值"
message ??= "默认值"
}
const obj = {
running() {
console.log("run")
}
}
obj && obj.running() && obj.running()数字分隔符
10000_10000000
String.replaceAll
replace只会替换第一个。replaceAll可以替换所有。
ES13新特性
method.at()
1
2const names = ['abc', 'nba', 'cba']
console.log(names.at(-1)) // cbahasOwn(obj, ‘name’)(替代hasOwnProperty)
class中的新成员
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15class Person {
// 公共的
height = 1.88
// 私有的,外部不能访问
#age = 18
constructor(name) {
this.name = name
}
// 静态代码块,一般执行初始化的东西
static {
console.log("hello world")
}
}
const p = new Person('beichen')
console.log(p) // 所有通过new Person()创建出来的都包含height属性