0

我有一个对象,里面有一些函数,我在里面使用 setTimout。我正在尝试使用 clearTimeout 清除超时.. 但我没有打对。

var ExpireSession = {
    killSession: function () {
        var TESTVAR2 = setTimeout(function () {
            window.location.href = "error/expired.aspx";
        }, 15000);
    },

    stopTimers: function (){
        clearTimeout(ExpireSession.killSession.TESTVAR2)
    }
}

在 15 秒之前我触发:ExpireSession.stopTimers(); 但它并没有阻止它。任何想法我在这里做错了什么?

4

2 回答 2

2

var TESTVAR2是一个变量,它是在其中声明的函数的局部变量。它不是对象的属性。

如果要将其作为对象的属性访问,则必须将其定义为:

ExpireSession.killSession.TESTVAR2 = setTimeout(function () {

(您可能可以this根据调用函数的方式使用)。

于 2015-03-30T14:29:31.167 回答
0

因为 JavaScript 有函数作用域,所以TESTVAR2只会在killSession. 要引用它,您可以将其设置为 ExpireSession 的属性:

killSession: function () {
  this._TESTVAR2 = setTimeout(function () {
    window.location.href = "error/expired.aspx";
  }, 15000);
},
stopTimers: function () {
  clearTimout(this._TESTVAR2);
}
于 2015-03-30T14:33:59.210 回答