如何清除 Javascript 对象中的 setTimeout?

How to clear setTimeout inside Javascript Object?

我有一个对象,里面有一些函数,我在里面使用 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();但它并没有阻止它。知道我在这里做错了什么吗?

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

如果您想将其作为对象的 属性 进行访问,则必须这样定义它:

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

(您也许可以使用 this,具体取决于您调用函数的方式)。

因为JavaScript有功能范围,TESTVAR2只会在killSession内定义。要引用它,您可以将其设置为 ExpireSession 的 属性:

killSession: function () {
  this._TESTVAR2 = setTimeout(function () {
    window.location.href = "error/expired.aspx";
  }, 15000);
},
stopTimers: function () {
  clearTimout(this._TESTVAR2);
}