Javascript 在Nodejs中创建临时对象
可以创建临时对象吗 对象将在10秒内自动取消设置 也许我想用这样的东西Javascript 在Nodejs中创建临时对象,javascript,node.js,variables,Javascript,Node.js,Variables,可以创建临时对象吗 对象将在10秒内自动取消设置 也许我想用这样的东西 var foo = {}; foo[username] = 0; setTimeout(function () { delete foo[username]; }, 10000); 如果在1000多个对象上使用上述代码,则该代码对服务器有害吗 或者有人有更好的主意?您可以创建一个具有属性的对象,该属性将在指定的超时后自动将属性设置回未定义的 function Foo(timeout) { var temp; var
var foo = {};
foo[username] = 0;
setTimeout(function () { delete foo[username]; }, 10000);
如果在1000多个对象上使用上述代码,则该代码对服务器有害吗
或者有人有更好的主意?您可以创建一个具有属性的对象,该属性将在指定的超时后自动将属性设置回未定义的
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
您还可以在值存在或现有计时器运行时阻止任何更新。这一切都取决于设计需要。您应该看看文档,了解您试图解决的实际问题是什么?@Bergi很抱歉解释得不好,我想使用节点irc为我的服务器创建一个机器人。我试着做防洪水,我的想法是每次有人聊天,我的机器人都会增加尼克属性int,所以如果有人在10秒内聊天超过5次,他就会被静音。编写的代码可以正常工作。但是,由于种种原因,这看起来是个坏主意。如果你能解释你真正想解决的问题,而不是问你想出的看起来像黑客的解决方案,那么我们可以讨论一下是否有非黑客的方法来解决你的问题。听起来你可能想要“利率限制”它测量并控制给定用户可以执行某项操作的频率,根据您想要执行的操作的细节,有很多现有的代码解决方案。我不认为这是OP想要的。哦,有副作用的二传手很难看…