WeakMap.prototype.set()

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

set() 方法是 WeakMap 实例上的一个方法,它向此 WeakMap 添加一个具有指定键和值的条目,或者如果键已存在,则更新现有条目。

试一试

const weakmap = new WeakMap();
const object1 = {};
const object2 = {};

weakmap.set(object1, "foo");
weakmap.set(object2, "bar");

console.log(weakmap.get(object1));
// Expected output: "foo"

console.log(weakmap.get(object2));
// Expected output: "bar"

语法

js
set(key, value)

参数

key

要添加到 WeakMap 对象中或要在其中修改的条目的键。必须是对象或未注册的 Symbol。对象键通过引用进行比较,而不是通过值。

value

要添加到 WeakMap 对象中或要在其中修改的条目的值。可以是任何值。

返回值

WeakMap 对象。

异常

TypeError

如果 key 不是对象或未注册的 Symbol,则抛出错误。

示例

使用 set()

js
const wm = new WeakMap();
const obj = {};

// Add new elements to the WeakMap
wm.set(obj, "foo").set(window, "bar"); // chainable

// Update an element in the WeakMap
wm.set(obj, "baz");

// Using a non-registered symbol as key
const sym = Symbol("foo");
wm.set(sym, "baz");
wm.set(Symbol.iterator, "qux");

规范

规范
ECMAScript® 2026 语言规范
# sec-weakmap.prototype.set

浏览器兼容性

另见