ES12常用语法

FinalizationRegistry (类)

  1. 定义:用来监听GC之前的回调
  2. 使用: 通过声明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 (类)

  1. 定义: 设置对一个对象的引用为弱引用,会被GC回收
  2. 使用: 返回一个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

  1. 定义:替换字符串中匹配到的全部结果
    let str = 'abbbbb'
    let newStr = str.replaceAll('b','c')
    console.log(newStr) --> 'accccc'

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!