Я просто тестирую ES6 и хочу переписать часть кода, написанную на обычном javascript, на ES6. И теперь я застреваю при попытке переписать частные свойства и методы в классах ES6. Кажется, что классы в ES6 явно не предоставляют никаких личных данных или методов.
Кроме того, я проверил этот поток: Частные свойства в классах JavaScript ES6 и выяснил, что мы могли бы использовать WeakMap для хранения личных данных. Что-то вроде странно, но все же это может быть работа. И мне удалось использовать его для частных данных.
Но как насчет частных методов? Каков рекомендуемый способ использования частных методов (или даже защищенных методов) в классах ES6?
Я был бы признателен, если бы кто-нибудь смог показать мне чистый способ переписать эту часть кода, используя класс ES6, а также частные методы.
Спасибо.
Вот простой старый код 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) {
...
}
}