我有一个名为“会话”的类,其中有一个值,称为“时间”。 我想创建一个函数来更改一个实例的“时间”,而无论创建多少实例,增量都会在其他实例之间进行划分。
示例:sess1.time = 45,sess2.time = 60,sess3.time = 50 如果我将sess1.time加5,则其他两个都会减少2。
到目前为止,这是我的代码:
http.head("http://domain.io", (res)=>{
console.log(res.statusCode)
})
答案 0 :(得分:1)
您可以保留一系列Session实例:
const sessions = []; // this is leaking though
class Session extends Workshop {
constructor(name, desc, time){
super(name, desc);
this.time = time;
sessions.push(this); // collect all created sessions
}
getSession() {
console.log(this.name + " " + this.desc + " " + this.time);
}
changeTime(newTime) {
let delta = this.time - newTime;
// apply the delta to all other sessions
for(const other of sessions) {
if(other === this) continue;
other.time -= delta / (sessions.length - 1);
}
this.time = newTime;
}
}
专门管理一组sessions
而不是泄漏全局变量可能是有益的。
答案 1 :(得分:0)
尝试创建会话计数器,并将其传递给函数,并在有条件的情况下根据计数器的值进行陈述
class Workshop {
constructor(name, desc) {
this.name = name;
this.desc = desc;
}
getWork() {
console.log(this.name + " " + this.desc);
}
}
class Session extends Workshop {
constructor(name, desc, time){
super(name, desc);
this.time = time;
}
getSession() {
console.log(this.name + " " + this.desc + " " + this.time);
}
changeTime(newTime,i) {
if(i==0){
let delta = this.time + newTime;
this.time = delta;
}
else {
let delta = this.time -2;
this.time = delta;
}
return this.time
}
}
let sessionList = [
sess1 = new Session('hummus', 'yamyam', 45),
sess2 = new Session('Kabab', 'mmmmmm', 70)
]
var i=0;
sessionList.forEach((session) => {
session.changeTime(5,i);
i++;
console.log(session.time);
});