这个问题与这个问题类似,除了我不想在 chrome 代码中这样做。
在 javascript(在浏览器中运行)中,我想跟踪使用特定构造创建的所有对象。很简单,我可以这样做:
var listObjects = [];
function Object() {
listObjects.push(this);
}
Object.prototype = {
// class members
};
这很好,除了对象即使不再使用也会保留(垃圾收集器保留它们,因为在 listObjects 中仍然有一个引用)造成内存泄漏。现在,我可以添加一个“removeObject”函数从列表中删除一个对象,但这需要用户在对象超出范围时手动调用。现在这可以解决,如果
- 会有弱引用
- 可以找出一个对象有多少引用
- 可以定义一个自动调用的析构函数
不幸的是,根据我的研究,这些都不存在于 javascript 中(至少在它应该在浏览器中运行时不存在)。
谁能想到另一种在javascript中工作的方法,或者我错过的一些可以用来做到这一点的javascript功能?