背景:ウェブサイトで使用する必要のある操作(スムーズモーション関数など)に対してステップタイプのイベントを実装するために
呼び出されるjavascriptオブジェクトを作成しました。Step
Stepオブジェクトのメソッドを使用して、各ステップを実行する関数を登録できますregisterFunction(func)
。
ステップごとに関数の実行を処理するために、Stepオブジェクトには。と呼ばれる別のメソッドがありrun()
ます。このメソッドでは、登録されている関数のリストを実行し、それらを実行してから関数を呼び出しsetTimeout(...)
、実行関数への参照を渡して次のステップで呼び出します。
問題:
最初の「ステップ」は、私のhtmlページの<body>タグのonloadイベント(属性)によって実行されます(ただし、間接的に:Step.run
によって呼び出される関数によってinitiateJS()
呼び出され onload
ます)。最初のステップでは何も問題はありません。ただし、2番目のステップまでに、Stepオブジェクト内の変数は破棄されたように見えます。それらはすべて未定義になります。
質問:
ガベージコレクターが原因かもしれないと思っていましたか?多分それはどういうわけかその参照を失いますか?
また、setTimeout(...)
ステップタイプのイベント実装を作成するための最良の方法を使用していますか?
詳細:
Stepオブジェクトは、jsドキュメントで次のように宣言されています。
var Step = {
myVars: "somevalues",
anArray: [],
run: function() {
//run the registered functions
setTimeout(this.run,this.interval);
};
また、次のステップでは、Step
オブジェクトはまだ存在しています。
その他のマイナーな詳細: