我有一个全局变量
global.loggedInUsers = {};
。此对象用作和字典被唯一的key:value
对占用。
密钥是唯一的,值是帐户对象。
function Account(hash, jsonData) {
this.hash = hash;
this.accountJson = JSON.parse(jsonData);
this.pongUpdate = 20;
setInterval(function() {
// Stuff happens here blah blah
}, 1000);
}
Account.protoype....
在我的代码中的某个时刻,我最终调用了删除函数
delete(loggedInUsers.key);
因为Account
类包含setInterval
调用,如果删除了Account
对象,setInterval会停止还是我必须将变量中的setInterval存储在析构函数中?
答案 0 :(得分:4)
setInterval
中对该函数的引用已存在,并且由于您未使用clearInterval
- 它将继续运行。
var t = 1;
function Account() {
this.a = setInterval(function() {
console.log('a ' + t)
t += 1
}, 1000);
}
a = new Account();
setTimeout(function() {
delete(a)
}, 3000)

请注意,在javascript
中无法创建Destructor
函数,因此,在delete
对象后,您需要确保setInterval
也已清除:
var t = 1;
Account = function() {
this.a = setInterval(function() {
console.log('a ' + t)
t += 1
}, 1000);
}
Account.prototype.clear = function() {
clearInterval(this.a)
}
a = new Account();
setTimeout(function() {
a.clear()
delete(a)
}, 3000)