WeakMap.prototype.getOrInsert()
En esta página
The getOrInsert() method of {{jsxref("WeakMap")}} instances returns the value corresponding to the specified key in this WeakMap. If the key is not present, it inserts a new entry with the key and a given default value, and returns the inserted value.
If the computation of the default value is expensive, consider using {{jsxref("WeakMap.prototype.getOrInsertComputed()")}} instead, which takes a callback to compute the default value only if it's actually needed.
{{InteractiveExample("JavaScript Demo: WeakMap.prototype.getOrInsert()")}}
```js interactive-example const map = new WeakMap([[window, "foo"]]); console.log(map.getOrInsert(window, "default")); // Expected output: "foo"
console.log(map.getOrInsert({}, "default")); // Expected output: "default"
## Syntax
```js-nolint
getOrInsert(key, defaultValue)
Parameters#
key- : The key of the value to return from the
WeakMapobject. Must be either an object or a non-registered symbol. Object keys are compared by reference, not by value. defaultValue- : The value to insert and return if the key is not already present in the
WeakMapobject.
Return value#
The value associated with the specified key in the WeakMap object. If the key can't be found, defaultValue is inserted and returned.
Exceptions#
- {{jsxref("TypeError")}}
- : Thrown if
keyis not an object or a non-registered symbol.
Examples#
Using 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"
Specifications#
{{Specifications}}
Browser compatibility#
{{Compat}}
See also#
- Polyfill of
WeakMap.prototype.getOrInsertincore-js - es-shims polyfill of
WeakMap.prototype.getOrInsert - {{jsxref("WeakMap")}}
- {{jsxref("WeakMap.prototype.get()")}}
- {{jsxref("WeakMap.prototype.set()")}}
- {{jsxref("WeakMap.prototype.has()")}}
- {{jsxref("WeakMap.prototype.getOrInsertComputed()")}}