Я просто пытаюсь использовать ES6 и хочу переписать часть кода, написанную на обычном javascript, на ES6. И теперь я застреваю при попытке переписать частные свойства и методы в классах ES6. Кажется, что классы в ES6 явно не предоставляют никаких личных данных или методов.Есть частные свойства и методы в классах ES6
Кроме того, я проверил эту тему: Private properties in JavaScript ES6 classes и узнал, что мы можем использовать WeakMap для хранения личных данных. Что-то вроде странно, но все же это может быть работа. И мне удалось использовать его для частных данных.
Но как насчет частных методов? Каким образом рекомендуется использовать частные методы (или даже защищенные методы) в классах ES6?
Я был бы признателен, если бы кто-нибудь мог показать мне clean способ переписать эту часть кода, используя класс 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) {
...
}
}
В статье [* MDN: Classes *] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes) должно быть достаточно информации. – RobG