前言
在前端开发中,我们经常需要进行对象映射,这时候我们就需要用到 Map 和 WeakMap 这两个数据结构。其中 WeakMap 更为灵活,它支持动态增删键值对,并且使用完全不影响垃圾回收。而 nweakmap 就是利用了 WeakMap 数据结构,提供了一组高度可配置的弱 key 映射模型,本文将介绍如何使用 npm 包 nweakmap。
安装和引入
安装和引入非常简单,只需要运行以下命令即可:
npm install nweakmap
引入方式也很简单:
const { createWeakMap } = require('nweakmap');
创建 WeakMap
创建 WeakMap 的方式有两种。第一种是使用内置的 createWeakMap
函数,第二种是继承 WeakMap
类并实现自己的方法。
创建方式一
const obj = {}; const wm = createWeakMap(obj);
createWeakMap
接受一个参数,即一个对象。它将返回一个 WeakMap,key 是 obj,value 可以自定义。
创建方式二
-- -------------------- ---- ------- ----- --------- ------- ------- - -------------------- - --------------- -- --- - -- ------- - ----- --- - --- ----- -- - --- ---------------- --- ----------
方法
nweakmap 提供了三个常用的方法,分别是 get
、set
和 delete
。另外它也继承了 WeakMap 自己的 API,如 has
、get
、set
、delete
等。
const obj = {}; const wm = createWeakMap(obj); wm.set(obj, 'my value'); console.log(wm.get(obj)); // my value wm.delete(obj); console.log(wm.get(obj)); // undefined
配置
nweakmap 非常灵活,提供了许多配置项。下面介绍几个最常用的配置项:
maxAge
: key 的自动清理时间,默认永久存储,单位是毫秒
const obj = {}; const wm = createWeakMap(obj, { maxAge: 1000 });
这样配置后,如果对象 obj
没有被引用,那么 obj
将在 1 秒后被自动清除。
autoClean
: 是否开启自动清理模式
const obj = {}; const wm = createWeakMap(obj, { autoClean: true });
如果设置成 true
,那么会自动清理过期的 key。
createValue
: 创建 value 的函数
const obj = {}; const wm = createWeakMap(obj, { createValue: () => ({ test: 'my value' }) });
当调用 wm.get(obj)
时,如果 obj 还没有 value,那么将调用 createValue
函数创建 value。
总结
本文介绍了使用 npm 包 nweakmap 创建 WeakMap 并提供了常用的方法和配置项。nweakmap 让我们在前端开发中更加方便地进行对象映射的操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066f943d1de16d83a66c5c