我尝试了大约一个小时的搜索,似乎无法找到适合我的解决方案。我在一个由间隔调用的对象中有一个函数(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();
答案 0 :(得分:0)
您必须仔细查看JavaScript中this
的含义以及调用函数的上下文。您可以使用bind
的{{1}}方法确保上下文符合您的意图,如以下编辑所示:
Function
&#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 ....
}
祝你好运。