问题标签 [weakmap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
23 浏览

javascript - 我可以认为 JavaScript 的 WeakMap 中的值是弱可达的吗?

如果我在 javascript 中有两个 WeakMap:

我在 WeakMaps 中放置了一个 Provider 及其功能...

在这一点上,我希望提供者和它的功能都是强可达的。我的假设是,一个强可达的键会使它自己和它的值都不能用于垃圾回收。providerFtn和中的引用provider应该是安全的。

但是,如果我与我的提供者一起做了一堆重要的工作,然后清除我唯一的强stronglyReachableProvider参考......

假设没有对 WeakMaps 之外的对象的其他强引用。现在是否有myProvider资格factory进行垃圾收集?在这种情况下,如果 WeakMaps 中的值引用被认为是弱可达的,那就太好了,但我怀疑 WeakMap 值必然需要作为强引用来实现。

0 投票
2 回答
163 浏览

javascript - 是否可以在 JavaScript 中实现双向弱映射?

是否可以制作类似 WeakMap 的两种方式(通过其键获取值,或通过其值获取键)?

用法如下所示(在 TypeScript 语法中更好地说明):

在以后的任何时候,如果o除了在内部之外不再被引用TwoWayWeakMap,那么可以收集指向的SomeClass对象。o

笔记!map.set(k, v)必须允许 to的第二个参数是任何东西,而不仅仅是对象。v例如,可以是一个number

0 投票
0 回答
25 浏览

javascript - Javascript - 将 2 个子对象映射到父对象以在彼此之间切换内容

我的问题是我有这样的默认布局:

我有这样的布局:

所以我删除的布局是:

现在,我在已删除字段旁边有一个加号按钮,可将其添加回正确位置的布局,另一侧有一个减号按钮。对我来说最简单的方法是在开始时创建唯一的 ID,但我不允许这样做。

可以在类别中切换字段,因此每次都必须将它们添加到类别的末尾。

我虽然关于弱地图,但我怎样才能使用对象引用来做到这一点?如何将布局对象和删除的对象引用到默认布局对象?

0 投票
1 回答
61 浏览

javascript - 如何让子类从 javascript 中的超类访问私有字段?

我正在尝试创建一个堆栈和队列类,但是如果不能使用继承,我就不能将数据字段设为私有。每次尝试时,我都会收到 Uncaught SyntaxError: Private field '#data' must be declared 在封闭类错误中。如何让子类继承私有字段?下面的代码: