Javascript 将类绑定到另一个类的实例
我正在构建一个JS应用程序,使用多个定时器(数字、模拟)。我想使用一个基类作为Javascript 将类绑定到另一个类的实例,javascript,jquery,Javascript,Jquery,我正在构建一个JS应用程序,使用多个定时器(数字、模拟)。我想使用一个基类作为计时器的函数:启动、停止、更新等 每次创建计时器时,都会创建新的onChange事件。因此,当计时器滴答作响时,多个实例得到更新,而不仅仅是在其中创建计时器的实例 我的问题是:如何绑定另一个类并Timer实例 计时器类: class Timer = { constructor() { this.seconds = 0; } start() { this.tim
计时器
的函数:启动、停止、更新等
每次创建计时器时,都会创建新的onChange
事件。因此,当计时器滴答作响时,多个实例得到更新,而不仅仅是在其中创建计时器的实例
我的问题是:如何绑定另一个类并Timer
实例
计时器类:
class Timer = {
constructor() {
this.seconds = 0;
}
start() {
this.timer = setInterval(update, 25);
}
stop() {
clearInterval(this.timer);
}
update() {
this.seconds += 1;
//emit data
let event = new Event("timer-tick");
event.detail = {
seconds: seconds,
}
document.body.dispatchEvent(event);
}
}
数字定时器类:
class DigitalTimer = {
constructor() {
this.timer = new Timer();
this.handleEvent();
}
handleEvent() {
$('body').on('timer-tick', function(e) {
//tick, do somehting with it.
});
}
start() {
this.timer.start();
}
stop() {
this.timer.stop()
}
}
通过在一个普通对象上绑定
和触发器事件,我确实实现了它。
工作样本:
函数原型上有一个方法可以满足您的需要
start() {
this.timer = setInterval(this.update.bind(this), 25);
}
另一方面,您不应该依靠setInterval
或setTimeout
来增加时间。当然,它们在进行定期调用时很有用,但不能保证所用的时间。您可以在每次调用时将初始对象与新对象进行比较。我认为您所需要做的就是不要在文档上全局触发timer tick事件。body
-而是使用单个timer
实例注册回调,然后从update
方法调用它们,而不是使用dom事件。@Bergi你能再解释一下吗;我不明白如何调用更新函数。保留一个函数数组(或完整的DigitalTimer
instances),并在update
方法中调用那些handleEvent
方法,而不是触发DOM事件。或者,使用jQuery.Callbacks()
或其他一些事件发射器。
start() {
this.timer = setInterval(this.update.bind(this), 25);
}