对象没有方法?

时间:2015-02-03 17:53:07

标签: javascript

我尝试了大约一个小时的搜索,似乎无法找到适合我的解决方案。我在一个由间隔调用的对象中有一个函数(Function2)。 Function2找不到Function1,并且说该方法不存在。为什么这可能是我的语法,或者我的语法有什么问题?

var ClassA = function ()
{
    this.attribute = "";

    this.function1 = function()
    {
        alert("Function 1");
    };

    this.function2 = function()
    {
        alert("Function 2");
        this.function1(); <----- Does not exist?
    };

    this.function3 = function()
    {
        setInterval(this.function2, 5000);
    };
};

var CLASS_A = new ClassA();
CLASS_A.function3();

2 个答案:

答案 0 :(得分:0)

您必须仔细查看JavaScript中this的含义以及调用函数的上下文。您可以使用bind的{​​{1}}方法确保上下文符合您的意图,如以下编辑所示:

&#13;
&#13;
Function
&#13;
&#13;
&#13;

答案 1 :(得分:0)

setInterval以异步方式运行。当您将this.function2作为setInterval的参数提供时,您基本上提供了一个回调方法。当setInterval达到5000时,它会调用你的回调方法。

“this”关键字根据上下文而变化。回调上下文与对象的“ClassA”上下文非常不同。这与“这个”不一样。

诀窍是这样做:

var ClassA = function(){

   var that = this;

   //And then everywhere else use that instead of this.
   that.function1 = function() { ... 

   that.function2 = function() { ...
        that.function1

   that.function3 = function ....

}
祝你好运。