symbol-like object with initialValue to create private fields
目前為
此腳本不應該直接安裝,它是一個供其他腳本使用的函式庫。欲使用本函式庫,請在腳本 metadata 寫上: // @require https://update.cn-greasyfork.org/scripts/391608/743979/PrivateFieldAccessor.js
// ==UserScript==
// @name PrivateFieldAccessor
// @namespace hoehleg.userscripts.private
// @version 0.1
// @description symbol-like object with initialValue to create private fields
// @author Gerrit Höhle
// @grant none
// ==/UserScript==
/* jshint esversion: 6 */
const PrivateFieldAccessor = (() => {
'use strict';
return class PrivateFieldAccessor {
constructor(description, initialValue) {
this.symbol = Symbol(description);
this.initialValue = initialValue;
}
init(object) {
object[this] = this.initialValue;
}
get(object) {
if (!Object.prototype.hasOwnProperty.call(object, this)) {
this.init(object);
}
return object[this];
}
set(object, value) {
object[this] = value;
}
valueOf() {
return this.symbol;
}
};
})();