创建出来对象,可以传入一个回调函数callback
会在注册的对象销毁的时候进行调用,当这个对象被销毁的时候就会执行了
在这里就写了注册函数的对象,里面有一种方法
我们可以将里面的值进行注册进来
let resGist = new FinalizationRegistry(() => { console.log("触发中....") })
let obj = { name: '1223' }
resGist.register(obj);
在node中会开启一个进程来运行代码
在GC中不定时的进行回收的
图例:
如果这里的对象赋值为空的话,就会将引用删除
GC 垃圾回收器就会直接销毁对象
这里的对象就会被销毁掉
这里的两个对象就会被回收了
在销毁的时候会将第二个参数的值,进行一个回调
WeakRef的使用
使用Object的对象
这里是有两个引用指向地址
如果这里改变引用的话,也是不会销毁掉的
我们可以使用WeatSet 来进行一个引用
这里也是可以使用到 info的,但是这里是一个弱类型的引用
这里会进行一个回收
new WeakRef()
就是这样来写的
赋值引用是一个强引用
这里的弱引用不能直接进行使用,而是要用deref() 来获取到原先的对象
然后进行调用里面的属性
通过这样的一个东西获取里面的东西
这里可以使用可选链
获取到一个弱类型的引用
对于内存的管理是非常的精细的,才会使用到弱类型的引用
WeakRef()
logical-assign-operator 逻辑赋值运算
判断这里是否有值,如果这里有值的话,这里info属性
如果这里有值的话,会把这里的逻辑与赋值到这里面进行使用
这里依然是 why
逻辑或,逻辑空赋值
E12其它的知识点: 数字的分割符 123_123_123_123
String.replaceAll() 进行字符串的全部替换
String s = "我.爱.中.国";
将字符串s中的“.”使用空格替换掉,
如果s.replaceAll(".","");会将整个字符串替换成空字符串
原因则是replaceAll函数的两个参数replaceAll(regex, replacement)
第一个参数regex代表在该字符串中通过正则表达式查找符合添加的子字符串并使用第二个参数replacement替换掉,
而在正则表达式中“.”代表的是全部的意思,与“*”是同等的意思,因此当使用“.”的时候会被作为通配符,
如果解决这种问题,达到咱们想要的效果,则需要将“.”进行转义,使之正则将其认为成普通的“.”而不是通配符,
所以“.”需要在“.”的前面加上“\”,但如果想要正确的通过编译使用转义字符,则还需将“\”再转义下,即在“\”的前面加上“\”,
即“\.”,
String s = "我.爱.中.国".replaceAll("\.","");
而String的replace方法则是正常的不包含正则表达的替换
使用! 进行一个取非的操作