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()

Baseline 2026
Neu verfügbar

Seit Februar 2026 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.

Die Methode getOrInsert() von WeakMap-Instanzen gibt den Wert zurück, der dem angegebenen Schlüssel in dieser WeakMap zugeordnet ist. 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 Standardwerts aufwendig ist, sollten Sie stattdessen WeakMap.prototype.getOrInsertComputed() verwenden. Diese Methode erhält einen Callback, der den Standardwert nur dann berechnet, 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 Werts, der aus dem WeakMap-Objekt zurückgegeben werden soll. Er muss entweder ein Objekt oder ein nicht registriertes Symbol sein. Objektschlüssel werden anhand ihrer Referenz verglichen, nicht anhand ihres Werts.

defaultValue

Der Wert, der eingefügt und zurückgegeben wird, wenn der Schlüssel im WeakMap-Objekt noch nicht vorhanden ist.

Rückgabewert

Der Wert, der dem angegebenen Schlüssel im WeakMap-Objekt zugeordnet ist. Wenn der Schlüssel nicht gefunden wird, wird defaultValue eingefügt und zurückgegeben.

Ausnahmen

TypeError

Wird ausgelöst, wenn key weder ein Objekt noch ein nicht registriertes Symbol ist.

Beispiele

getOrInsert() verwenden

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

Spezifikation
ECMAScript® 2027 Language Specification
# sec-weakmap.prototype.getorinsert

Browser-Kompatibilität

Siehe auch