title: ES12(ECMA2021)
categories: Javascript
tag:

  • es12
    date: 2021-11-29 11:16:34

FinalizationRegistry

FinalizationRegistry 对象可以让你在对象被垃圾回收时请求一个回调。

  • FinalizationRegistry 提供了这样的一种方法:当一个在注册表中注册的对象被回收时,请求在某个时间点上调用一个清理回调。(清理回调有时被称为 finalizer );
  • 你可以通过调用 register 方法,注册任何你想要清理回调的对象,传入该对象和所含的值;
  1. let obj = { name: 'dh' }
  2. const registry = new FinalzationRegistry((value) => {
  3. console.log('对象被销毁了', value)
  4. })
  5. registry.register(obj, 'obj')
  6. obj = null

WeakRefs

如果我们默认将一个对象赋值给另外一个引用,那么这个引用是一个强引用:

  • 如果我们希望是一个弱引用的话,可以使用 WeakRef;
  1. //WeakRefs
  2. let obj = { name: 'why' }
  3. let info = new WeakRef(obj)
  4. //不可以这样子访问
  5. console.log(info.name) //undefined
  6. //必须加上deref()
  7. console.log(info.deref()) //{ name: 'why' }

逻辑赋值运算

||=逻辑或

  1. let message = ''
  2. message ||= 'dh'
  3. console.log(message)

&&=逻辑与

  1. let obj = {
  2. name: 'why'
  3. }
  4. //看一下是否有obj,然后判断obj.name。然后把obj.name赋值给obj
  5. obj &&= obj.name
  6. console.log(obj)

??=逻辑空.识别 undefined 或者 null

  1. let foo = null
  2. foo ??= '默认值'
  3. console.log(foo)

数字分隔符

String.replaceAll()

字符串替换