背景:
我编写了一个 javascript 对象,该对象被调用Step
来为我的网站可能需要使用的任何操作实现步进类型事件,例如平滑运动功能。我可以使用 Step 对象的方法在其中注册函数以运行每个步骤,registerFunction(func)
.
为了处理每一步运行函数,Step 对象有另一个方法称为run()
. 在这个方法中,我遍历已注册函数的列表,运行它们,然后调用该setTimeout(...)
函数,将引用传递给 run 函数,以便在下一步调用它。
问题:
第一个“步骤”由我的 html 页面的 <body> 标记中的 onload 事件(属性)运行(但间接地:Step.run
由调用的函数initiateJS()
调用 onload
)。第一步没有任何问题。然而,到了第二步,Step 对象中的变量似乎已经被处理掉了;它们都变得未定义。
问题:
我在想这可能是由于垃圾收集器造成的?也许它以某种方式失去了参考?
另外,是否正在使用setTimeout(...)
最好的方法来实现步进式事件?
详细信息:
Step 对象在 js 文档中声明为:
var Step = {
myVars: "somevalues",
anArray: [],
run: function() {
//run the registered functions
setTimeout(this.run,this.interval);
};
此外,在下一步中,该Step
对象仍然存在。
其他一些小细节: