Map和WeakMap在JavaScript中都是用于存储键值对的集合。他们之间的主要区别在于键的类型和存储方式。
-
键的类型:在Map中,键可以是任何类型,包括对象、基本类型(例如字符串、数字)或者函数等。而在WeakMap中,键必须是对象,不能是其他基本类型。
-
存储方式:Map对键值对的存储是强引用,即只要Map对象存在,它的键值对就会一直在内存中,不会被垃圾回收机制回收。而WeakMap对键的引用是弱引用,如果没有其他地方引用这个键对象,那么这个键值对会被垃圾回收机制回收,以此来优化内存。
以下是代码举例:
// Map的使用
let map = new Map();
let keyString = "字符串";
let keyObj = {
};
let keyFunc = function()