Advertisement

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, "这是一个函数");
    
    // 获取值
    console.l

全部评论 (0)

还没有任何评论哟~