变量未在对象中定义

时间:2012-10-16 11:42:52

标签: javascript object timer

我已经使用变量和方法声明了一个对象。 这里简化了

var myObj = {
    myTimer: null,
    startTimer: function(){
        clearTimeout(myObj.myTimer);
        myObj.myTimer = setTimeout("myObj.myFunction()", 250);
    },
    myFunction: function(){
        alert('Hi');
    }
};

调用startTimer后,将向控制台输出以下错误

Uncaught ReferenceError: myFunction is not defined
Uncaught ReferenceError: startTimer is not defined

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

您应该将函数传递给setTimeout而不是字符串,最好使用this而不是对象名称:

var myObj = {
    myTimer: null,
    startTimer: function(){
        clearTimeout(this.myTimer);
        this.myTimer = setTimeout(this.myFunction, 2500);
    },
    myFunction: function(){
        alert('Hi');
    }
};

这是工作小提琴:http://jsfiddle.net/vyshniakov/fpZBa/

答案 1 :(得分:0)

我的代码实际上没有任何问题,尽管它可能更漂亮。

问题是我如何调用方法,而不是在对象本身内。