您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
Weakly references a value to a specified object. May be used to create private fields.
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/391608/744101/PrivateProperty.js
// ==UserScript== // @name PrivateProperty // @namespace hoehleg.userscripts.private // @version 0.1 // @description Weakly references a value to a specified object. May be used to create private fields. // @author Gerrit Höhle // @grant none // ==/UserScript== /* jshint esversion: 6 */ const PrivateProperty = (() => { const getOrCreate = (privateProperty, keyObj, defaultData) => { let data = privateProperty._weakReferences.get(keyObj); if (!data) { data = defaultData || { initialValue: privateProperty._initialValue }; privateProperty._weakReferences.set(object, data); } return data; }; return class PrivateProperty { constructor(initialValue) { this._weakReferences = new WeakMap(); this._initialValue = initialValue; } init(object, initialValueSpecific) { const data = getOrCreate(this, object); if (initialValueSpecific) { data.initialValue = initialValueSpecific; } data.value = (typeof data.initialValue === "function") ? data.initialValue() : data.initialValue; return this; } hasValue(object) { return this._weakReferences.has(object); } get(object) { return this._privateData.get(object); } set(object, value) { this._privateData.set(object, value); } for(object) { return { init: PrivateProperty.prototype.init.bind(this, boundObject), hasValue: PrivateProperty.prototype.hasValue.bind(this, boundObject), get: PrivateProperty.prototype.get.bind(this, boundObject), set: PrivateProperty.prototype.set.bind(this, boundObject) }; } }; })();