JS中Map与WeakMap的区别在于它们的键存储方式不同(支持键重复)
发布时间
阅读量:
阅读量
在JavaScript语言中,Map与WeakMap均为用于保存键值对数据结构的集合类型。二者的核心差异体现在键的数据类型以及存储机制上。
关于键的数据类型:Map允许使用任意类型的键,包括但不限于对象、基础数据类型(如字符串、数值)或函数等。相比之下,WeakMap的键仅能为对象类型,无法使用其他基础数据类型作为键。
关于存储机制:Map采用强引用方式存储其内部的键值对,这意味着只要Map实例仍然存在于内存中,其对应的键值对将不会被垃圾回收系统所释放。而WeakMap则采用弱引用机制处理其键对象,当该键对象在程序中没有被其他变量引用时,垃圾回收器将自动将其连同对应的值一并清除,从而实现对内存资源的有效管理。
以下是具体的代码示例:
// Map的使用
let map = new Map();
let keyString = "字符串";
let keyObj = {};
let keyFunc = function() {};
// 设置键值对
map.set(keyString, "这是一个字符串");
map.set(keyObj, "这是一个对象");
map.set(keyFunc, "这是一个函数");
// 获取值
c
全部评论 (0)
还没有任何评论哟~
