想我寫一個類A
在我基礎的Jetpack庫(即我們談論的鉻/擴展代碼):參考
function A() {
//constructor
}
A.prototype = {
//class members
};
用戶創建A
類的實例:
var a = new A();
現在假設我要跟蹤所創建的的A
所有實例的,我可以這樣做:
var listA = [];
和在A
構造添加listA.push(this);
,與結束了:
var listA = [];
function A() {
// constructor
listA.push(this);
}
A.prototype = {
// class members
};
所有細,直到a
用戶放下它的參考(例如a
超出範圍)。我現在有一個問題:listA
仍然包含對a
的引用,所以它將永遠不會被垃圾收集。此外,我無法過濾listA
實例A
否則無法訪問。我正在有效地泄漏記憶。
我需要的是推到listA
弱引用,而不是普通的引用。我認爲可以以某種方式做到這一點,但我不知道該從哪裏出發。我可以想像這樣的:
var weak_a = new weakRef(a);
assert(weak_a.ref === a);
但是我不知道,例如,如何測試弱引用是否仍然有效。或者如何有效地篩選出listA
中的弱項。有什麼建議麼?
so ... listA是一個? – 2011-02-25 16:04:07
nope。我編輯了這個問題,希望現在更清楚。 – CAFxX 2011-02-25 16:15:47