Map与WeakMap的区别与使用

本文介绍了JavaScript中Map和WeakMap数据结构的基本概念及其使用方法。Map允许任何类型的键值,并详细解释了其基本操作如set、get、has、delete等。WeakMap与Map相似,但仅接受对象作为键且键为弱引用,有助于防止内存泄漏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们常用的对象Object,是由key:value集合组成的,但key只能是字符串,有很大的使用限制。当我们需要其他类型的数据做key值时,就需要用到数据结构Map,它支持把各种类型的值,当做键。

var map = new Map();
var nie = {name:'Annie'};
var kth = {name:'Keith'};
map.set(nie,kth);
map.set(kth,nie);
console.log(map.get(nie));    //{name:'Keith'}
console.log(map.get(kth));    //{name:'Annie'}

上面例子使用了Map的set和get方法来设置和获取成员信息,此外Map还有以下常用属性和操作方法

map.size    //2,表示map中的成员数量
map.has(nie)    //true,布尔值,判断成员是否存在
map.delete(nie)    //true,布尔值,删除成员,删除成功返回true,失败返回false
map.clear()    //清除所有成员,没有返回值

除了使用set方法给Map添加成员,也可以通过接收参数的方式添加成员

var map2 = new Map([
    [nie,kth],
    [kth,nie]
])
console.log(map2.get(nie));    //{name:'Keith'}
console.log(map2.get(kth));    //{name:'Annie'}

WeakMap与Map类似,但有几点区别:

1、WeakMap只接受对象作为key,如果设置其他类型的数据作为key,会报错。

2、WeakMap的key所引用的对象都是弱引用,只要对象的其他引用被删除,垃圾回收机制就会释放该对象占用的内存,从而避免内存泄漏。

3、由于WeakMap的成员随时可能被垃圾回收机制回收,成员的数量不稳定,所以没有size属性。

4、没有clear()方法

5、不能遍历

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值