Javascript超时问题

Nik*_*Nik 1 javascript

我有这个Javascript类:

function PageManager () {
    this.timeoutHandler = function () {
        alert ("hello");
    }

    this.startTimeout = function () {
        this.timeout = setTimeout ("this.timeoutHandler()", 1000);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我打电话时,obj.startTimeout ();我收到此错误:

this.timeoutHandler is not a function
Run Code Online (Sandbox Code Playgroud)

如何在超时中调用类函数?

Fel*_*ing 7

如果将字符串传递给setTimeout,则在全局范围内评估代码.始终传递函数参考:

this.startTimeout = function () {
    var self = this;
    this.timeout = setTimeout(function() {
       self.timeoutHandler();
    }, 1000);
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您不需要对内部对象的引用timeoutHandler,则可以直接传递该函数:

this.timeout = setTimeout(this.timeoutHandler, 1000);
Run Code Online (Sandbox Code Playgroud)