当前位置:首页 > JavaScript

js实现weakmap

2026-03-02 06:27:07JavaScript

WeakMap 的基本概念

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

创建 WeakMap

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

const weakMap = new WeakMap();

添加键值对

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

js实现weakmap

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

获取值

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

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

检查键是否存在

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

js实现weakmap

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

删除键值对

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

weakMap.delete(objKey);

WeakMap 的特点

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

使用场景

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实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…