ES12常用语法
FinalizationRegistry (类)
- 定义:用来监听GC之前的回调
- 使用: 通过声明FinalizationRegistry类,调用原型上的register方法检测GC回收之前的状态
const finalRegistry = new FinalizationRegistry( (objName)=>{ console.log(objName + '被回收了') } ) let obj = { name:'nano' } /* 调用类上的 register 方法 ,传入两个参数 第一个参数为需要监听的对象,第二个参数为该对象的标记名称 */ finalRegistry.register(obj,'obj') obj = null --> obj被回收了
注意: 因为GC是不定时回收的,所以打印的时间不是固定的
WeakRef (类)
- 定义: 设置对一个对象的引用为弱引用,会被GC回收
- 使用: 返回一个WaekRef类,通过deref( )方法获取具体对象内容
let obj = { name:'nano' } let info = new WeakRef( obj ) console.log(info.deref( ).name) --> 'nano' obj = null /* 因为是弱引用,当obj这个强引用被释放时,info也会被GC检测释放 返回一个WaekRef类,通过deref方法获取具体对象名称 */ console.log(info.deref( ).name) --> undefined
值得注意: 因为GC机制不是实时的,所以可能还是会获取弱引用中的值,但实际GC回收后就会返回undefined,代码会执行报错
逻辑赋值运算符
/*
||= 逻辑或赋值运算
*/
let msg = ''
msg ||= 'hello' --> msg = msg || 'hello'
/*
&&= 逻辑与赋值运算
*/
let value = 'abc'
value &&= null --> value = value && value = null
console.log( value ) --> null
/*
??= 逻辑空赋值运算
*/
let value = null
value ??= 'abc' --> value = value ?? value = 'abc'
console.log( value ) --> 'abc'
replaceAll
- 定义:替换字符串中匹配到的全部结果
let str = 'abbbbb' let newStr = str.replaceAll('b','c') console.log(newStr) --> 'accccc'
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!