WeakMap.prototype.getOrInsert()
Базовый уровень Недавно доступен
Эта функция работает на последних устройствах и версиях браузеров. Эта функция может не работать на старых устройствах или версиях браузеров. Она доступна во всех браузерах с февраля 2026 года.
Метод getOrInsert() экземпляров WeakMap возвращает значение, соответствующее указанному ключу в этом WeakMap. Если ключ отсутствует, он вставляет новую запись с ключом и заданным значением по умолчанию и возвращает вставленное значение.
Если вычисление значения по умолчанию является дорогостоящим, рассмотрите возможность использования WeakMap.prototype.getOrInsertComputed() вместо этого, который принимает функцию обратного вызова для вычисления значения по умолчанию только в том случае, если оно действительно необходимо.
Попробуйте
const map = new WeakMap([[window, "foo"]]);
console.log(map.getOrInsert(window, "default"));
// Expected output: "foo"
console.log(map.getOrInsert({}, "default"));
// Expected output: "default"
Синтаксис
getOrInsert(key, defaultValue)
Параметры
-
key - Ключ значения, которое нужно вернуть из объекта
WeakMap. Должен быть либо объектом, либо незарегистрированным символом. Ключи объектов сравниваются по ссылке, а не по значению. -
defaultValue - Значение для вставки и возврата, если ключ еще не присутствует в объекте
WeakMap.
Возвращаемое значение
Значение, связанное с указанным ключом в объекте WeakMap. Если ключ не найден, defaultValue вставляется и возвращается.
Исключения
-
TypeError - Выбрасывается, если
keyне является объектом или незарегистрированным символом.
Примеры
Использование getOrInsert()
const wm = new WeakMap();
const obj = {};
console.log(wm.get(obj)); // undefined
console.log(wm.getOrInsert(obj, "default")); // "default"
console.log(wm.get(obj)); // "default"
console.log(wm.getOrInsert(obj, "another default")); // "default"
Спецификации
Совместимость с браузерами
| Настольный компьютер | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | Bun | Deno | Node.js | |
getOrInsert |
145 |
145 |
144 |
129 |
26.2 |
145 |
144 |
96 |
26.2 |
Нет |
145 |
26.2 |
1.2.20 |
2.6.7 |
26.0.0 |
См. также
- Polyfill
WeakMap.prototype.getOrInsertвcore-js - Polyfill es-shims для
WeakMap.prototype.getOrInsert WeakMapWeakMap.prototype.get()WeakMap.prototype.set()WeakMap.prototype.has()WeakMap.prototype.getOrInsertComputed()
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/getOrInsert