map 和 set 的 size 是只读属性而非方法,直接用点号访问;map.size 返回键值对数量,set.size 返回唯一值个数;object 无原生 size,需手动计算。

Map 和 Set 在 JavaScript 中没有 size() 方法,但都有一个只读的 size 属性,直接用点号访问即可获取元素个数。
Map 的 size 属性
Map 实例的 size 返回键值对的数量,无论键或值是什么类型,只要成功调用 set() 添加过,就会被计入。
- 它不是方法,不能加括号:❌
map.size() - 正确写法是:✅
map.size - 即使 key 是对象、函数或 Symbol,也正常计数
Set 的 size 属性
Set 实例的 size 返回唯一值的个数,重复添加同一值不会增加 size。
- 自动去重后统计,例如
new Set([1, 1, 2])的size是2 - 和 Map 一样,
size是属性,不是函数:✅set.size,❌set.size()
注意:Object 没有原生 size 属性
普通对象({})不支持 size。如果想获取自有可枚举属性数量,需手动计算:
Object.keys(obj).length-
Object.getOwnPropertyNames(obj).length(含不可枚举) - 但这和 Map/Set 的
size本质不同——前者是“模拟”,后者是内置属性
常见误用提醒
- 不要混淆
Array.length和Map.size:数组用length,Map/Set 用size - size 始终是实时更新的,添加或删除后立即反映最新数量
- 在 for...of 或迭代器中,size 不影响遍历行为,仅作查询用
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











