title: ES12(ECMA2021)
categories: Javascript
tag:
- es12
date: 2021-11-29 11:16:34
FinalizationRegistry
FinalizationRegistry 对象可以让你在对象被垃圾回收时请求一个回调。
- FinalizationRegistry 提供了这样的一种方法:当一个在注册表中注册的对象被回收时,请求在某个时间点上调用一个清理回调。(清理回调有时被称为 finalizer );
- 你可以通过调用 register 方法,注册任何你想要清理回调的对象,传入该对象和所含的值;
let obj = { name: 'dh' }
const registry = new FinalzationRegistry((value) => {
console.log('对象被销毁了', value)
})
registry.register(obj, 'obj')
obj = null
WeakRefs
如果我们默认将一个对象赋值给另外一个引用,那么这个引用是一个强引用:
- 如果我们希望是一个弱引用的话,可以使用 WeakRef;
//WeakRefs
let obj = { name: 'why' }
let info = new WeakRef(obj)
//不可以这样子访问
console.log(info.name) //undefined
//必须加上deref()
console.log(info.deref()) //{ name: 'why' }
逻辑赋值运算
||=
逻辑或
let message = ''
message ||= 'dh'
console.log(message)
&&=
逻辑与
let obj = {
name: 'why'
}
//看一下是否有obj,然后判断obj.name。然后把obj.name赋值给obj
obj &&= obj.name
console.log(obj)
??=
逻辑空.识别 undefined 或者 null
let foo = null
foo ??= '默认值'
console.log(foo)
数字分隔符
String.replaceAll()
字符串替换