您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A Map extended as a Cache. Optional KeyExtractor - Function, optional ValueTransformer - Functions, as well as an optional validityPeriod after which an entry is automatically going to be removed.
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.org/scripts/405143/815223/SimpleCache.js
// ==UserScript== // @name SimpleCache // @namespace hoehleg.userscripts.private // @version 0.1 // @description A Map extended as a Cache. Optional KeyExtractor - Function, optional ValueTransformer - Functions, as well as an optional validityPeriod after which an entry is automatically going to be removed. // @author Gerrit Höhle // // @grant none // // @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js // ==/UserScript== /* jshint esnext: true */ /* globals $, jQuery */ const SimpleCache = (() => { const cloneObject = (obj) => { if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) { return obj; } return jQuery.extend(true, {}, obj); }; return class SimpleCache extends Map { constructor({ keyExtractor = k => k, setValueTransformer = v => cloneObject(v), getValueTransformer = v => cloneObject(v) } = {}) { super(); Object.assign(this, { keyExtractor, setValueTransformer, getValueTransformer }); } get(key) { const finalKey = this.keyExtractor(key); return this.getValueTransformer(super.get(finalKey)); } set(key, value, validityPeriodMs = 0) { const finalKey = this.keyExtractor(key); super.set(finalKey, this.setValueTransformer(value)); if (validityPeriodMs > 0) { setTimeout(() => this.delete(finalKey), validityPeriodMs); } return this; } has(key) { return super.has(this.keyExtractor(key)); } delete(key) { return super.delete(this.keyExtractor(key)); } }; })();