可以创建临时对象吗?
对象将在10秒内自动取消设置
也许我想用这样的东西
var foo = {};
foo[username] = 0;
setTimeout(function () { delete foo[username]; }, 10000);
如果在1000多个对象上使用它,对于服务器的代码是否错误?
或有人有更好的主意?
答案 0 :(得分:2)
你可以创建一个对象,该对象具有一个属性,该属性会在指定的超时后自动将属性设置回undefined
。
function Foo(timeout) {
var temp;
var timer;
Object.defineProperty(this, 'temp', {
get: function () {
return temp;
},
set: function (value) {
temp = value;
timer = setTimeout(this.reset, timeout);
}
});
this.reset = function() { temp = undefined; };
}
然后使用它看起来像:
// Console:
> var foo = new Foo(10000); // specifies how long to timeout in ms
> foo.temp // undefined
> foo.temp = 5;
> foo.temp // 5
> // 10 seconds ellapse
> foo.temp // undefined
您还可以执行诸如在存在值或现有计时器正在运行时阻止任何更新的操作。这一切都取决于设计需求。