当然,您也可以使用类:
class ClickCounter {
constructor(element, onClick, delay = 500) {
this.element = element;
this.onClick = onClick;
this.counter = 0;
this.delay = delay;
this.lastClicked = 0;
element.addEventListener("click", () => this.click(), false);
}
click() {
if(Date.now() < this.lastClicked + this.delay)
return;
this.lastClicked = Date.now();
this.onClick.call(this.element, this.counter++);
}
}
new ClickCounter(document.body, count => {
alert(count);
});
[是]这样做更好吗?
不,不是真的。使用类在这里并不真正有用,因为您不想公开属性,也不需要继承。工厂似乎是这里的一个好方法。
小旁注:而不是
return clickCountListener;
这样做更有意义
return clickCountObj;
因为它将公开设置和可能有用的计数。
警告:以下内容不明确
回到我在爪哇工作的时候…
…你接管了那个毫无意义的命名计划(
clickCountObj.clickCount
)我想你不会泄露任何必要的信息
settings.count
…