Ich versuche gerade ES6 und möchte einen Teil des in regulärem Javascript geschriebenen Codes in ES6 umschreiben. Und jetzt stehe ich fest, während ich versuche, die privaten Eigenschaften und Methoden in ES6-Klassen neu zu schreiben. Es sieht so aus, als ob Klassen in ES6 explizit nichts bieten, um private Daten oder Methoden zu haben.Habe private Eigenschaften und Methoden in ES6-Klassen
Außerdem habe ich diesen Thread überprüft: Private properties in JavaScript ES6 classes und festgestellt, dass wir WeakMap verwenden können, um private Daten zu speichern. Was irgendwie komisch ist, aber trotzdem kann es ein Work around sein. Und ich habe es geschafft, es für private Daten zu verwenden.
Aber was ist mit privaten Methoden? Was ist die empfohlene Methode, um private Methoden (oder sogar geschützte Methoden) in ES6-Klassen zu haben?
Ich würde mich freuen, wenn mir jemand eine saubere Möglichkeit zeigen könnte, diesen Teil des Codes mit ES6-Klasse zusammen mit den privaten Methoden neu zu schreiben.
Danke.
Hier ist der gute alte Javascript-Code:
function Deferred() {
// Private data
var isPending;
var handlers = {
resolve: [],
reject: [],
notify: []
};
// Initialize the instance
init();
function init() {
isPending = true;
this.promise = new Promise(this);
}
// Public methods
this.resolve = function(value) {
trigger('resolve', value);
};
this.reject = function(reason) {
trigger('reject', reason);
};
this.notify = function(value) {
trigger('notify', value);
};
this.on = function(event, handler) {
...
};
// Private method
function trigger (event, params) {
...
}
}
Es sollte ausreichende Informationen im Artikel [* MDN: Classes *] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes) geben. – RobG