Spec-Zone.ru › JavaScript

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"

Спецификации

Спецификация
Спецификация языка ECMAScript® 2027
# sec-weakmap.prototype.getorinsert

Совместимость с браузерами

Настольный компьютер Мобильные устройства Сервер
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
  • WeakMap
  • WeakMap.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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API