【发布时间】:2016-04-24 14:48:02
【问题描述】:
我只是在尝试 ES6,并想将用常规 javascript 编写的部分代码重写为 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文章中应该有足够的信息。
标签: javascript class ecmascript-6