弱地图倒置

时间:2017-07-19 19:03:24

标签: javascript weak-references weakmap

有没有办法在Javascript中创建任何其他弱引用的WeakMap来存储键值对,其中键是字符串/数字,值是Object。

引用必须是这样的:

const wMap = new WeakRefMap();
const referencer = {child: new WeakRefMap()}
wMap.set('child', temp.child);
wMap.has('child'); // true
delete referencer.child
wMap.has('child'); //false     

我创建了一种树结构,它保存了当前作用域中仍然使用的引用的跟踪。

我会进行大量的合并,并且递归地清理深度嵌套的结构对于这个用例来说效率非常低。

1 个答案:

答案 0 :(得分:1)

您无法捕获删除操作。你可以做的就是将数据封装在另一个对象中。

function referenceTo(value){
 this.value=value;
}

因此,如果删除此引用,则无法再访问

var somedata=new referenceTo(5)
var anotherref=somedata;
//do whatever
delete somedata.value;
//cannot be accessed anymore
anotherref.value;//undefined