Ich habe einen Workaround, der wunderbar funktioniert und ziemlich einfach ist... obwohl die Leistung wahrscheinlich nicht die beste ist... aber es funktioniert und funktioniert gut.
Der Trick besteht darin, dass bis private Eigenschaften und Funktionen festgelegt und standardisiert/angenommen sind, Workarounds erforderlich sind und dies ein weiterer Workaround ist...
class ClassPrivateProperties {
constructor(instance) {
const $this = instance;
let properties = {};
this.prop = (key, value = undefined) => {
if (!value) {
return properties[key];
} else {
properties[key] = value;
}
};
this.clear = instance => {
if ($this === instance) {
properties = {};
return true;
} else {
return false;
}
}
}
}
Dies ist eine Beispielnutzung, die beliebig sein kann (auch wenn Sie den obigen verwenden, können Sie ihn gerne verbessern)
class Test {
constructor() {
this._privateProps = new ClassPrivateProperties(this);
}
property(key, value = undefined) {
if (!value) {
return this._privateProps.prop(key);
} else {
this._privateProps.prop(key, value);
}
}
clear() { return this._privateProps.clear(this); }
}
const test = new test;
test.property('myKey','some value here');
console.log(test.property('myKey'));
Wie bereits erwähnt, ist dies wahrscheinlich nicht das Beste vom Besten, aber es funktioniert und macht die Eigenschaften wirklich privat.