此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

WeakMap.prototype.set()

基线 广泛可用

自 2015年7月 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。

WeakMap 实例的 set() 方法根据指定的键值在该 WeakMap 中添加新元素。

尝试一下

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

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

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

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

语法

js
set(key, value)

参数

key

必须是对象或非全局注册的符号。要添加到 WeakMap 对象的元素的键。

value

任何要添加到 WeakMap 对象的元素的值。

返回值

WeakMap 对象

异常

TypeError

如果 key 不是一个对象或非全局注册的符号,则抛出该异常。

示例

使用 set() 方法

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

// 将新元素添加到 WeakMap
wm.set(obj, "foo").set(window, "bar"); // 链式调用

// 更新 WeakMap 中的元素
wm.set(obj, "baz");

// 使用非全局注册的符号作为键
const sym = Symbol("foo");
wm.set(sym, "baz");
wm.set(Symbol.iterator, "qux");

规范

规范
ECMAScript® 2027 Language Specification
# sec-weakmap.prototype.set

浏览器兼容性

参见