总是返回函数值的Javascript变量

总是返回函数值的Javascript变量,javascript,Javascript,我很确定我知道这个问题的答案(而且答案是否定的),但是有没有可能创建一个总是返回函数值而不“调用”变量的变量呢 我讨厌在我使用的网站上出现不活动的警告。我一天看几次,但我会把它打开,以防有更新需要看。它会在15分钟后使用一些javascript自动将我注销——令牌不会因cookie过期而失效,我的会话也不会在服务器端删除——它检查的变量称为last\u user\u action 我想让last_user_action始终指向new Date().getTime() 如果我可以很容易地将对las

我很确定我知道这个问题的答案(而且答案是否定的),但是有没有可能创建一个总是返回函数值而不“调用”变量的变量呢

我讨厌在我使用的网站上出现不活动的警告。我一天看几次,但我会把它打开,以防有更新需要看。它会在15分钟后使用一些javascript自动将我注销——令牌不会因cookie过期而失效,我的会话也不会在服务器端删除——它检查的变量称为
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