当前位置:首页 > 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实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js实现继承

js实现继承

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

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…