Sto solo provando ES6 e voglio riscrivere una parte di codice scritta in javascript normale in ES6. E ora, sono bloccato mentre provo a riscrivere le proprietà e i metodi privati nelle classi ES6. Sembra che le classi in ES6 non forniscano esplicitamente nulla per avere dati o metodi privati.Avere proprietà e metodi privati nelle classi ES6
Inoltre, ho controllato questa discussione: Private properties in JavaScript ES6 classes e ho scoperto che era possibile utilizzare WeakMap per memorizzare dati privati. Il che è un po 'strano, ma può essere un problema. E sono riuscito a usarlo per dati privati.
Ma che dire dei metodi privati? Qual è il modo consigliato per avere metodi privati (o anche metodi protetti) nelle classi ES6?
Apprezzerei se qualcuno mi può mostrare un pulito modo di riscrivere questa parte di codice utilizzando la classe ES6 insieme ai metodi privati.
Grazie.
Ecco il codice javascript pianura vecchio:
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) {
...
}
}
Ci dovrebbero essere informazioni sufficienti nell'articolo [* MDN: Classi *] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes). – RobG