我只是尝试了ES6,并且想要将使用常规JavaScript编写的代码的一部分改写为ES6。而现在,我在试图重新编写ES6类中的私有属性和方法时遇到困难。似乎ES6中的类没有明确提供任何具有私有数据或方法的东西。在ES6类中有私有属性和方法
此外,我检查了这个线程:Private properties in JavaScript ES6 classes,并发现我们可以使用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) {
...
}
}
[* MDN:Classes *](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes)文章中应该有足够的信息。 – RobG