想我写一个类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