【WeakSet & WeakMap Demo】
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<script>
// WeakMap 有以下特殊限制:
// 1. 不支持 size 属性
// 2. 不支持 clear() 方法
// 3. 不能遍历(没有 keys() 、 values() 和 entries() 方法)
// 这些限制的原因是 WeakMap 的"弱引用"特性:
// - 键对象可能随时被垃圾回收
// - 系统无法准确追踪还存在多少键值对
// - 所以不提供任何遍历或统计相关的功能
// WeakSet 有以下特殊限制:
// 1. 不支持 size 属性
// 2. 不支持 clear() 方法
// 3. 不能遍历(没有 keys()、values() 和 entries() 方法)
// 4. 只能添加对象,不能添加原始值
// 这些限制的原因是 WeakSet 的"弱引用"特性:
// - 集合中的对象可能随时被垃圾回收
// - 系统无法准确追踪还存在多少元素
// - 所以不提供任何遍历或统计相关的功能
let ws = new WeakSet();
let obj = { name: "张三" };
ws.add(obj);
// ========================
let map = new WeakMap();
// key 得是 对象
let key = { name: "zhangsan" };
map.set(key, "zhangsan");
console.log("---->", map.size); // 🙅
console.log(map.has(key));
</script>
</body>
</html>
Weak 语义是弱和阉割,

浙公网安备 33010602011771号