WeakMap.prototype.getOrInsert()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Die getOrInsert()-Methode von WeakMap-Instanzen gibt den Wert zurück, der dem angegebenen Schlüssel in diesem WeakMap entspricht. Wenn der Schlüssel nicht vorhanden ist, fügt sie einen neuen Eintrag mit dem Schlüssel und einem gegebenen Standardwert hinzu und gibt den eingefügten Wert zurück.
Wenn die Berechnung des Standardwerts aufwendig ist, sollten Sie stattdessen WeakMap.prototype.getOrInsertComputed() verwenden, die einen Rückruf nimmt, um den Standardwert nur dann zu berechnen, wenn er tatsächlich benötigt wird.
Probieren Sie es aus
const map = new WeakMap([[window, "foo"]]);
console.log(map.getOrInsert(window, "default"));
// Expected output: "foo"
console.log(map.getOrInsert({}, "default"));
// Expected output: "default"
Syntax
getOrInsert(key, defaultValue)
Parameter
key-
Der Schlüssel des Wertes, der aus dem
WeakMap-Objekt zurückgegeben wird. Muss entweder ein Objekt oder ein nicht registriertes Symbol sein. Objektschlüssel werden nach Referenz und nicht nach Wert verglichen. defaultValue-
Der Wert, der eingefügt und zurückgegeben wird, wenn der Schlüssel im
WeakMap-Objekt noch nicht vorhanden ist.
Rückgabewert
Der mit dem angegebenen Schlüssel im WeakMap-Objekt verknüpfte Wert. Wenn der Schlüssel nicht gefunden werden kann, wird defaultValue eingefügt und zurückgegeben.
Ausnahmen
TypeError-
Wird ausgelöst, wenn
keyweder ein Objekt noch ein nicht registriertes Symbol ist.
Beispiele
>Verwendung von 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"
Spezifikationen
| Specification |
|---|
| Upsert> # sec-weakmap.prototype.getOrInsert> |