gpt4 book ai didi

javascript - Firefox JavaScript chrome 代码中的弱引用

转载 作者:搜寻专家 更新时间:2023-11-01 04:27:34 24 4
gpt4 key购买 nike

假设我正在我的基于 Jetpack 的库中编写一个类 A (即我们正在谈论 chrome/扩展代码):

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 的引用,所以它永远不会被垃圾收集。此外,我无法过滤掉 AlistA 实例,否则无法访问这些实例。我实际上是在泄漏内存。

我需要的是推送到 listA 弱引用而不是常规引用。我认为有可能以某种方式做到这一点,但我真的不知道从这里去哪里。我可以设想这样的事情:

var weak_a = new weakRef(a);
assert(weak_a.ref === a);

但是我不知道,例如,如何测试弱引用是否仍然有效。或者如何有效地过滤掉 listA 中的弱条目。有什么建议吗?

最佳答案

你只需要上课indicate it supports weak references .然后,当你想使用它的弱引用版本时,你会想要使用 Components.utils.getWeakReference并存储它。 Here is some test code向您展示了如何在 JavaScript 中更多地使用它。

关于javascript - Firefox JavaScript chrome 代码中的弱引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5119123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com