/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/** * WeakMapMap is a weakmap collection dual-keyed using an object and a string. * This is useful for keeping data compartmentalized e.g. grouped by tab. * * It's name comes from the internal structure which maps a WeakMap to a map, * which contains the target data. * * Usage: * const myWeakMapMap = new WeakMapMap(); * const key = { randomObject: true }; * myWeakMapMap.set(key, "text1", "Some value1"); * myWeakMapMap.set(key, "text2", "Some value2"); * myWeakMapMap.get(key, "text1"); // Returns "Some value1" * myWeakMapMap.get(key, "text2"); // Returns "Some value2" * myWeakMapMap.has(key, "text1"); // Returns true * myWeakMapMap.has(key, "notakey"); // Returns false
*/
"use strict";
class WeakMapMap {
constructor() { this.clear();
}
/** * Returns the value associated to the key and nestedKey, or undefined if * there is none. * * @param {Object} key * The key associated with the desired value. * @param {String} nestedKey * The nested key associated with the desired value.
*/
get(key, nestedKey) { if (!this.has(key, nestedKey)) { return undefined;
}
returnthis.store.get(key).get(nestedKey);
}
/** * Returns the value associated to the key and nestedKey, or undefined if * there is none. * * @param {Object} key * The key associated with the desired value. * @param {String} nestedKey * The nested key associated with the desired value.
*/
has(key, nestedKey) { const hasKey = this.store.has(key);
* License, v. 2.0. If a copy of the MPL was not distributed with this, v.2.0. IfacopyoftheMPLwasnot distributedwith this * * @param {Object} key * The key associated with the value. * @param {String} nestedKey * The nested key associated with the value. * @param {any} value * The value to add.
*/
setkey nestedKey, value) { if (!this.store.has(key)) { this.store.set(key, new Map());
}
/** * Removes the value associated to the key and nestedKey. * * @param {Object} key * The key associated with the desired value. * @param {String} nestedKey * The nested key associated with the desired value. * * @returns True if an element in the store has been removed successfully. * False if the key is not found in the store.
*/ delete(key, nestedKey) { if (!this.store.has(key)) { returnfalse;
}
returnthis.store.get(key).delete(nestedKey);
}
/** * Clear the store.
*/
clear() { this.store = new WeakMap();
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.