1. FinalizationRegistry
- FinalizationRegistry 对象可以在对象被垃圾回收时请求一个回调
- FinalizationRegistry 提供了这样的一种方法:当一个在注册表中注册的对象被回收时,请求在某个时间点上调用一个清理回调。(清理回调有时被称为 finalizer )
- 可以通过调用register方法,注册任何想要清理回调的对象,传入该对象和所含的值
- 代码在node环境的控制台下执行是从上到下执行后就关闭进程了,而FinalizationRegistry的回调清理并不是与其同时进行的。需要在浏览器中运行,监听浏览器中的控制台
1 | let obj = { |
2. WeakRefs
- 将一个对象赋值给另外一个引用时,这个引用是一个强引用
- 如果希望是一个弱引用的话,可以使用WeakRef
- deref()
- 如果原对象没有销毁,那么可以获取到原对象
- 如果原对象已经销毁,那获取到的是undefined
1 | let obj = { |
- 当info=obj时,就是强引用,即使让obj=null,清理时obj也不会被回收;当info=WeakRef(obj)时,就是弱引用,obj=null后,obj就可以被回收
3. logical assignment operators
3.1. 逻辑或运算符
1 | // 逻辑或 |
3.2. 逻辑与运算符
1 | // 逻辑与 |
3.3. 逻辑空运算符
1 | // 逻辑空 |