我很确定我知道这个问题的答案(并且它不是),但是是否有可能创建一个总是返回函数值的变量而不用#34;调用"变量?
我在我使用的网站上厌倦了不活动警告。我每天都会看几次,但是我保持打开状态,以防我需要查看更新。它会在15分钟后使用一些javascript自动注销 - 令牌不会因Cookie过期而失效,我的会话也不会被服务器端删除 - 而它检查的变量称为last_user_action
。< / p>
我希望last_user_action
始终指向new Date().getTime();
。
last_user_action = function() { new Date().getTime(); }
如果我可以轻松地将所有对last_user_action
的引用更改为last_user_action()
,那么会有效,但我无法做到。
last_user_action = (function() { return new Date().getTime(); })();
只设置一次值。
就像我说的那样,我怀疑是否有办法做到这一点,但如果有可能,我该怎么办呢?
修改 它现在发生在我身上,它更容易运行
window.setInterval(function() { last_user_action = new Date().getTime(); }, 1000 * 60 * 10);
在Chrome的javascript控制台中。
答案 0 :(得分:4)
好吧,如果您确定它的工作方式是这样,您可以每分钟使用setInterval来设置值:
setInterval(function(){
last_user_action = new Date().getTime();
},60000)
答案 1 :(得分:2)
不是那么直接,但定期更新变量是微不足道的。
function updateLastUserAction() {
last_user_action = new Date().getTime(); // or Date.now();
setTimeout(updateLastUserAction, 10000); // run again in 10 seconds
}
updateLastUserAction();
您可以更改更新周期以适合您 - 因为更新功能非常轻量级,您可以经常运行它并不重要。
答案 2 :(得分:2)
假设last_user_action
是全局变量,这意味着它实际上是window
的属性,您可以为该属性定义一个getter。
Object.defineProperty(window, 'last_user_action', {
get: function() {
return new Date().getTime();
}
});
last_user_action; // 1412882205169
last_user_action; // 1412882206490
这通常是一个坏主意,但鉴于你在这里乱砍,它看起来并不是那么糟糕。
答案 3 :(得分:1)
AFAIK你不能用变量做到这一点。
但你可以使用getter:
对属性进行处理var obj = {};
Object.defineProperty(obj, 'last_user_action', {
get: function() { return new Date().getTime(); }
});
obj.last_user_action; // Current date time