如何在Javascript对象中清除setTimeout?

时间:2015-03-30 14:27:02

标签: javascript settimeout cleartimeout

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

2 个答案:

答案 0 :(得分:2)

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

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

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

(您可能可以使用this,具体取决于您如何调用该函数。)

答案 1 :(得分:0)

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

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