を失います実行フラグによって実行が許可されます。以下のようになります。私は、Chromeブラウザ上でこのコードを実行すると、それはmain.js.でprogram.execute()の呼び出しに到達することはありませんJavaScriptのシングルトンは、私が「program.js」で実装されているシングルトンパターンに問題がある参照
var program = null;
function initDemo() {
program = Program.getProgram();
program.init();
runDemo();
};
function runDemo() {
if(program != null && program.run) {
program.execute();
}
requestAnimationFrame(runDemo);
};
プログラムの参照は、実行フラグをfalseに維持します。たとえinit()関数で変更されたとしてもです。私はデバッガでこれをすべて確認しました。私は 'this.run = true'コールが4つのコールバックにネストされていることを指摘しておきます。しばらくして、私はinit()関数を使ってmain.js内のプログラムのグローバル参照の実行フラグを変更することができたと考えました。したがって 'this.run = true'の代わりに 'program.run = true'の代わりに。これは動作し、ループはexecute()を実行します。しかし、これは私がOOPから使用したスタイルではありません。ここで実際に何が起こっていますか?コールバックとはまったく関係があります。私は 'this.run = true'をinit()の終了時にコールバックから外すと、フラグは正しく変更されますが、プログラムの実行が間違っています。
は、あなたがどこでも ')' initDemo(呼び出しを見ることができませんか。 –
'if(typeof instance!=" undefined "){' ここに_programを意味しますか? –
申し訳ありませんが、私のソースからコードを書き直しました。私はコードを編集しました。 initDemo()関数はHTMLファイルのonloadと呼ばれます。 – SuperTasche