总是返回函数值的Javascript变量
我很确定我知道这个问题的答案(而且答案是否定的),但是有没有可能创建一个总是返回函数值而不“调用”变量的变量呢 我讨厌在我使用的网站上出现不活动的警告。我一天看几次,但我会把它打开,以防有更新需要看。它会在15分钟后使用一些javascript自动将我注销——令牌不会因cookie过期而失效,我的会话也不会在服务器端删除——它检查的变量称为总是返回函数值的Javascript变量,javascript,Javascript,我很确定我知道这个问题的答案(而且答案是否定的),但是有没有可能创建一个总是返回函数值而不“调用”变量的变量呢 我讨厌在我使用的网站上出现不活动的警告。我一天看几次,但我会把它打开,以防有更新需要看。它会在15分钟后使用一些javascript自动将我注销——令牌不会因cookie过期而失效,我的会话也不会在服务器端删除——它检查的变量称为last\u user\u action 我想让last_user_action始终指向new Date().getTime() 如果我可以很容易地将对las
last\u user\u action
我想让last_user_action
始终指向new Date().getTime()代码>
如果我可以很容易地将对last\u user\u action
的所有引用改为last\u user\u action()
,我会工作的,但我不能
last_user_action = (function() { return new Date().getTime(); })();
仅设置一次值
就像我说的,我怀疑有没有办法做到这一点,但如果有可能,我会怎么做
编辑
我现在想到,跑步会更容易
window.setInterval(function() { last_user_action = new Date().getTime(); }, 1000 * 60 * 10);
在Chrome的javascript控制台中。不是那么直接,但是周期性地更新变量是很简单的
function updateLastUserAction() {
last_user_action = new Date().getTime(); // or Date.now();
setTimeout(updateLastUserAction, 10000); // run again in 10 seconds
}
updateLastUserAction();
您可以根据自己的需要更改更新周期-因为更新函数非常轻量级,所以您可以经常运行它,这并不重要。不是直接更改,但是只定期更新变量是很简单的
function updateLastUserAction() {
last_user_action = new Date().getTime(); // or Date.now();
setTimeout(updateLastUserAction, 10000); // run again in 10 seconds
}
updateLastUserAction();
您可以根据自己的需要更改更新周期-因为更新功能非常轻量级,所以您可以经常运行它,这并不重要。好吧,您不能使用变量来实现这一点
但是您可以使用一个属性,使用一个getter:
var obj = {};
Object.defineProperty(obj, 'last_user_action', {
get: function() { return new Date().getTime(); }
});
obj.last_user_action; // Current date time
好吧,你不能用一个变量
但是您可以使用一个属性,使用一个getter:
var obj = {};
Object.defineProperty(obj, 'last_user_action', {
get: function() { return new Date().getTime(); }
});
obj.last_user_action; // Current date time
如果您确定它是这样工作的,您可以使用setInterval every minute来设置该值:
setInterval(function(){
last_user_action = new Date().getTime();
},60000)
如果您确定它是这样工作的,您可以使用setInterval every minute来设置该值:
setInterval(function(){
last_user_action = new Date().getTime();
},60000)
假设last\u user\u action
是一个全局变量,这意味着它实际上是window
的一个属性,您可以为该属性定义一个getter
Object.defineProperty(window, 'last_user_action', {
get: function() {
return new Date().getTime();
}
});
last_user_action; // 1412882205169
last_user_action; // 1412882206490
这通常是一个坏主意,但考虑到您在这里进行黑客攻击,它看起来并没有那么糟糕。假设last\u user\u action
是一个全局变量,这意味着它实际上是window
的一个属性,您可以为该属性定义一个getter
Object.defineProperty(window, 'last_user_action', {
get: function() {
return new Date().getTime();
}
});
last_user_action; // 1412882205169
last_user_action; // 1412882206490
这通常是个坏主意,但考虑到你在这里进行黑客攻击,它看起来并没有那么糟糕。setInterval(function(){last_user_action=new Date().getTime();},1000)
你可以使用6e5
而不是1000*60*10
setInterval(function(){last_user_action=new Date().getTime()},1000)
您可以使用6e5
而不是1000*60*10