Po prostu próbuję ES6 i chcę przepisać część kodu napisanego w zwykłym javascript na ES6. A teraz utknąłem podczas próby ponownego napisania prywatnych właściwości i metod w klasach ES6. Wygląda na to, że klasy w ES6 nie udostępniają niczego, aby mieć prywatne dane lub metody.Mieć prywatne właściwości i metody w klasach ES6
Sprawdziłem również ten wątek: Private properties in JavaScript ES6 classes i okazało się, że możemy użyć WeakMap do przechowywania prywatnych danych. Co jest dziwne, ale nadal może być pracą. I udało mi się go użyć do prywatnych danych.
Ale co z prywatnymi metodami? Jaki jest zalecany sposób posiadania prywatnych metod (lub nawet metod chronionych) w klasach ES6?
Byłbym wdzięczny, gdyby ktoś mógł mi pokazać czysty sposób przepisywania tej części kodu przy użyciu klasy ES6 wraz z prywatnymi metodami.
Dzięki.
Oto zwykły stary kod javascript:
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) {
...
}
}
Powinny być dostępne wystarczające informacje w artykule [* MDN: Classes *] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes). – RobG