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 dieser WeakMap entspricht. Ist der Schlüssel nicht vorhanden, fügt sie einen neuen Eintrag mit dem Schlüssel und einem angegebenen Standardwert ein und gibt den eingefügten Wert zurück.
Wenn die Berechnung des Standardwertes teuer ist, sollten Sie überlegen, stattdessen WeakMap.prototype.getOrInsertComputed() zu verwenden, das einen Rückruf akzeptiert, 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
WeakMapObjekt zurückgegeben werden soll. Muss entweder ein Objekt oder ein nicht registriertes Symbol sein. Objekt-Schlüssel werden durch Referenz und nicht nach Wert verglichen. defaultValue-
Der Wert, der eingefügt und zurückgegeben wird, wenn der Schlüssel im
WeakMapObjekt nicht bereits vorhanden ist.
Rückgabewert
Der Wert, der mit dem angegebenen Schlüssel im WeakMap Objekt verknüpft ist. Wenn der Schlüssel nicht gefunden werden kann, wird undefined zurückgegeben.
Ausnahmen
TypeError-
Wird ausgelöst, wenn
keykein Objekt oder 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> |