【发布时间】:2022-01-14 19:50:56
【问题描述】:
我创建了一个具有不同计时器方法的计时器对象,我对它的工作方式非常满意。但是,我对代码质量不满意。我无法理解如何在不创建其他变量的情况下获得相同的工作方法,特别是属性intervalId 和函数resetSecAddMin。如果没有这些额外的变量,这个解决方案是否可以工作?
代码:
const timer = {
secondsPassed: 0,
minsPassed: 0,
intervalId: null,
startTimer() {
this.intervalId = setInterval(() => {
const resetSecAddMin = () => { this.secondsPassed = 0; this.minsPassed += 1 };
this.secondsPassed < 59 ? this.secondsPassed += 1 : resetSecAddMin();
}, [1000]);
},
getTime() {
return this.secondsPassed < 10 ? `${this.minsPassed}:0${this.secondsPassed}` : `${this.minsPassed}:${this.secondsPassed}`;
},
stopTimer() {
clearInterval(this.intervalId);
},
resetTimer() {
this.secondsPassed = 0;
this.minsPassed = 0;
},
};
我希望这个问题能为社区带来一些价值。我相信编写可读的代码并不比创建可行的解决方案更重要。
【问题讨论】:
-
您想删除共享状态,这是让不同方法处理相同数据的唯一方法?我不确定您如何期望
stopTimer这样的东西在没有访问计时器 ID 的情况下工作。我要更改的这段代码中的部分与共享属性无关。
标签: javascript object variables refactoring this