- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要一个 Flyweight 对象,因此我创建了一个对象并将其实例存储在 Map 中,如下所示:
const FlyweightNumber = (function(){
"use strict";
const instances = new Map();
class FlyweightNumber{
constructor(number){
Object.defineProperty(this, 'number', {
value: number
});
if(!instances.get(number)){
instances.set(number, this);
}
else {
return instances.get(number);
}
}
toString() {
return this.number;
}
valueOf(){
return this.number;
}
toJSON(){
return this.number;
}
}
return FlyweightNumber;
})();
module.exports = FlyweightNumber;
问题是,当我不再使用 FlyweightNumber 值时,它仍然在内存中,存储在这个 Map 中。
既然 WeakMap 和 WeakSet 应该让垃圾收集器在不再使用时将其清除,那么我如何编写构造函数来返回 WeakSet 或 WeakMap 中的对象,或者在不再存储时创建一个新对象?
最佳答案
您正在寻找soft reference实现您的号码缓存。不幸的是,JS 没有这些。
它的 WeakMap
也不会创建弱引用,它是一个 ephemeron实际上。它不允许您观察对象是否已被收集。
关于Javascript Flyweight 与 WeakMap 或 WeakSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50426282/
和Set一样,WeakSet也是es6新增的一种数据结构,那么它和Set有什么区别呢? WeakSet对比Set主要是两个区别: WeakSet只能放置对象,不能是其他任何类型 WeakSet里面的保
在本教程中,您将借助示例了解 JavaScript Set 和 WeakSet。 JavaScript ES6引入了两种新的数据结构,Set 和 WeakSet。 Set 类似于数组,
我最近更新了一个 React Native 应用程序。但是,在我的大多数模块中,我都遇到了这个错误: # could not be cloned. 例如,在模块上:@react-native-mapb
WeakSet 应该通过弱引用来存储元素。也就是说,如果一个对象没有被其他任何东西引用,那么它应该从 WeakSet 中清除。 我编写了以下测试: var weakset = new WeakSet(
这是我注意到的一些奇怪的事情。由于使用了 WeakSet 并且显然没有其他引用存在,因此以下代码不应破坏内存: 'use strict'; require('babel-polyfill'); con
问题Safely iterating over WeakKeyDictionary and WeakValueDictionary并没有像我希望的那样让我放松,而且它已经足够老了,值得再次询问而不是评
我正在研究是否可以在 python 中实现简单的回调功能。我以为我可以为此使用 weakref.WeakSet,但显然我遗漏了一些东西或被误解了。正如您在代码中看到的那样,我首先尝试使用“ClassA
WeakSet 应该通过弱引用来存储元素。也就是说,如果某个对象未被任何其他对象引用,则应将其从 WeakSet 中清除。 我写了下面的测试: var weakset = new WeakSet(),
我想要一个 Flyweight 对象,因此我创建了一个对象并将其实例存储在 Map 中,如下所示: const FlyweightNumber = (function(){ "use stri
为什么在 WeakSet 中 .add() 一个 Symbol 是不可能的? var ws = new WeakSet(); var sym = Symbol(); ws.add(sym); //er
在尝试理解 JavaScript 的 WeakMaps/WeakSets 时,我阅读了 MDN 文档。 其中写道:“WeakSet 是弱的:对集合中对象的引用被弱保留。如果没有其他对存储在 WeakS
考虑一个说明性的例子: function addSafely(weakset, value) { if (canBeAddedToWeakSet(value)) { weaks
ECMAScript 6 有这些非常相似的集合:Set 和 WeakSet。它们有什么区别? 最佳答案 主要区别在于,对 Set 中对象的引用是强引用,而对 WeakSet 中对象的引用是弱引用。这意
我正在实现一个 WeakSet,它将其元素弱包装在 WeakWrapper 中,以免增加它们的保留计数。 我的问题是,如何创建一个迭代器,以便我可以迭代跳过那些已被释放的元素(即 nil)。 请注意,
已经有一些关于 map 和弱 map 的问题,像这样:What's the difference between ES6 Map and WeakMap?但我想问一下在什么情况下我应该赞成使用这些数据
为什么console.log将弱集显示为 ? [13:37:11] [~] node Welcome to Node.js v14.4.0. Type ".help" for more inform
如何解释以下内容:如果我们注释第一次调用 console.log,则 set.[[Entries]].length 将为 1,如果没有注释 set.[[条目]].length = 0; 输出:长度=0
我正在构建一个 NextJS 网站,它很棒,但它无法在 IE 10/11 中运行,因为某些代码未正确转译。我对 babel 和 webpack 很不熟悉,以前从来没有自己配置过它们。我已经尝试通过在线
#1。缺少 .size 属性的解决方法? 在 JavaScript 中,我以前从未使用过 WeakSet 或 WeakMap,而且我对垃圾收集一般不太了解(我是 PHP + JS 开发人员,所以这是我
我正在使用“react-native-vector-icons”:“^8.1.0”,我得到了这个错误 node_modules/react-native-vector-icons/lib/create
我是一名优秀的程序员,十分优秀!