当前位置:首页 > JavaScript

js实现weakmap

2026-03-02 06:27:07JavaScript

WeakMap 的基本概念

WeakMap 是 JavaScript 中的一种集合类型,键必须是对象,值可以是任意类型。与 Map 不同,WeakMap 的键是弱引用,不会阻止垃圾回收机制回收键对象。

创建 WeakMap

使用 new WeakMap() 构造函数创建 WeakMap 实例:

const weakMap = new WeakMap();

添加键值对

使用 set 方法添加键值对,键必须是对象:

const objKey = {};
weakMap.set(objKey, 'value');

获取值

使用 get 方法根据键获取值:

const value = weakMap.get(objKey);
console.log(value); // 输出 'value'

检查键是否存在

使用 has 方法检查 WeakMap 中是否存在某个键:

const hasKey = weakMap.has(objKey);
console.log(hasKey); // 输出 true

删除键值对

使用 delete 方法删除指定的键值对:

weakMap.delete(objKey);

WeakMap 的特点

WeakMap 的键是弱引用,当键对象没有被其他引用时,会被垃圾回收,对应的键值对也会自动从 WeakMap 中移除。WeakMap 不可迭代,没有 size 属性,也不支持 clear 方法。

使用场景

WeakMap 适合用于存储与对象关联的私有数据或元数据,且不希望影响对象的垃圾回收。例如:

js实现weakmap

const privateData = new WeakMap();

class MyClass {
  constructor() {
    privateData.set(this, { secret: 42 });
  }

  getSecret() {
    return privateData.get(this).secret;
  }
}

const instance = new MyClass();
console.log(instance.getSecret()); // 输出 42

注意事项

WeakMap 的键必须是对象,尝试使用非对象键会抛出错误。WeakMap 不支持直接遍历或获取所有键值对。

标签: jsweakmap
分享给朋友:

相关文章

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…