2017-07-19 25 views
1

有沒有辦法在Javascript中創建WeakMap的任何其他弱引用來存儲鍵值對,其中鍵是String/Number,value是Object。WeakMap inverted

的引用將不得不工作是這樣的:

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

您無法捕獲刪除操作。你可以做的是將數據封裝在另一個obj中,例如

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 
+0

據我瞭解,當上面的一個被刪除,不刪除解決嵌套結構的問題? ps。我修正了這個例子,以前是無效的。 我不明白爲什麼es6 WeakMap不會將字符串作爲鍵和對象作爲值。似乎沒有增加任何日常編程的價值。 – Nabuska

+0

@nabuska耶,你可能需要過濾一些時間。 –

相關問題