map.prototype.set 用于向 map 添加或更新键值对,键值可为任意类型,重复键会覆盖旧值,方法返回 map 本身支持链式调用。

Map.prototype.set 是 JavaScript 中向 Map 对象添加或更新键值对的核心方法。调用它时传入一个键和一个值,Map 就会以该键为索引存储对应值;如果键已存在,则覆盖原值;如果不存在,则新增条目。
基本语法和用法
语法很简单:
map.set(key, value)其中:
- key 可以是任意类型(包括对象、函数、NaN、Symbol 等),这是 Map 相比普通对象的最大优势;
- value 同样支持任意类型;
- 方法返回当前 Map 对象本身(支持链式调用)。
例如:
const myMap = new Map();myMap.set('name', 'Alice');
myMap.set(42, 'answer');
myMap.set({id: 1}, 'user object');
设置对象或函数作为键
普通对象不能用作 Object 的属性名(会被自动转为字符串),但 Map 允许用任意值当键:
const objKey = {type: 'user'};const fnKey = () => {};
const m = new Map();
m.set(objKey, 'this is user');
m.set(fnKey, 'this is a function');
console.log(m.get(objKey)); // 'this is user'
console.log(m.get(fnKey)); // 'this is a function'
注意:键的相等性基于 SameValueZero 算法,所以两个结构相同但引用不同的对象,仍是不同键。
链式调用与批量设置
因为 set() 返回 Map 实例本身,可以连续调用:
.set('a', 1)
.set('b', 2)
.set('c', 3);
不过更推荐使用构造函数直接初始化多个键值对:
const map = new Map([['a', 1],
['b', 2],
['c', 3]
]);
覆盖已有键值
重复调用 set() 使用相同键时,新值会替换旧值,不会报错也不会新增条目:
m.set('x', 20); // 覆盖
console.log(m.get('x')); // 20
console.log(m.size); // 还是 1
若需先判断是否存在再操作,可用 has() 配合 get() 或直接用 set() —— 它本身是幂等的,安全可靠。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











