Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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

js
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 key weder ein Objekt noch ein nicht registriertes Symbol ist.

Beispiele

Verwendung von getOrInsert()

js
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

Browser-Kompatibilität

Siehe auch